В log4j: Как мы представляем в шаблоне более одного пробела (например: \s+
)? У меня есть шаблон, подобный этому %d{ISO8601}\t%t\t%m %n
, но разделение табуляции не является надежным, когда я разбирал бензопилу и LogMX. Я ищу замену разделенных несколькими пространствами, а не разделенных табуляцией, но я не могу их найти.
Любая помощь приветствуется. Спасибо.
Шаблон макета в log4j не является шаблоном регулярного выражения и не используется для поиска строк. По мере того, как его имя идитируется, оно используется для изложения сообщения, которое должно быть указано log4j. Что-то вроде \s+, как бы он знал, сколько пробелов для печати? Поэтому, если вам нужно несколько пробелов в макете сообщений, вы должны явно ввести эти пробелы в шаблон.
Я не уверен, чего вы действительно хотите достичь, но вы должны посмотреть на "модификатор формата" объяснения документации PatternLayout.
Бензопила использует log4j 'LogFilePatternReceiver' для обработки файлов журнала.
LogFilePatternReceiver имеет код для объединения нескольких пробелов, но этот код использует [] + вместо \s+
Я буду изучать его, чтобы использовать \s+.
Я только что попробовал ваш шаблон Log4j, и свежеприготовленный файл журнала был правильно проанализирован LogMX (с помощью анализатора Log4jPattern с этим шаблоном). Не могли бы вы объяснить, что "разделение табуляции не является надежным, когда я разбирался"?
Хотя лишний символ пробела между %m
и %n
довольно странный: каждое сообщение журнала должно заканчиваться символом пробела, который должен быть правильно проанализирован.
PS: Я согласен с ответами @FrVaBe и @Lolo