Шаблон Log4j, как представлять пространства

1

В log4j: Как мы представляем в шаблоне более одного пробела (например: \s+)? У меня есть шаблон, подобный этому %d{ISO8601}\t%t\t%m %n, но разделение табуляции не является надежным, когда я разбирал бензопилу и LogMX. Я ищу замену разделенных несколькими пространствами, а не разделенных табуляцией, но я не могу их найти.

Любая помощь приветствуется. Спасибо.

Теги:
log4j
parsing
apache-chainsaw

4 ответа

2

Шаблон макета в log4j не является шаблоном регулярного выражения и не используется для поиска строк. По мере того, как его имя идитируется, оно используется для изложения сообщения, которое должно быть указано log4j. Что-то вроде \s+, как бы он знал, сколько пробелов для печати? Поэтому, если вам нужно несколько пробелов в макете сообщений, вы должны явно ввести эти пробелы в шаблон.

1

Я не уверен, чего вы действительно хотите достичь, но вы должны посмотреть на "модификатор формата" объяснения документации PatternLayout.

0

Бензопила использует log4j 'LogFilePatternReceiver' для обработки файлов журнала.

LogFilePatternReceiver имеет код для объединения нескольких пробелов, но этот код использует [] + вместо \s+

Я буду изучать его, чтобы использовать \s+.

0

Я только что попробовал ваш шаблон Log4j, и свежеприготовленный файл журнала был правильно проанализирован LogMX (с помощью анализатора Log4jPattern с этим шаблоном). Не могли бы вы объяснить, что "разделение табуляции не является надежным, когда я разбирался"?

Хотя лишний символ пробела между %m и %n довольно странный: каждое сообщение журнала должно заканчиваться символом пробела, который должен быть правильно проанализирован.

PS: Я согласен с ответами @FrVaBe и @Lolo

Ещё вопросы

Сообщество Overcoder
Наверх
Меню