Как сделать вывод в log4perl более легким для чтения? - PullRequest
4 голосов
/ 26 ноября 2008

При использовании log4perl используемое расположение журнала отладки:

log4perl.appender.D10.layout=PatternLayout
log4perl.appender.D10.layout.ConversionPattern=%d [pid=%P] %p %F{1} (%L) %M %m%n
log4perl.appender.D10.Filter = DebugAndUp

Это создает очень подробные журналы отладки, например:

2008/11/26 11:57:28 [pid=25485] DEBUG SomeModule.pm (331) functions::SomeModule::Test Test XXX was successfull
2008/11/26 11:57:29 [pid=25485] ERROR SomeOtherUnrelatedModule.pm (99999) functions::SomeModule::AnotherTest AnotherTest YYY has faled

Это прекрасно работает и предоставляет отличные данные для отладки.

Однако каждая строка журнала отладки содержит разные имена функций, длину pid и т. Д. Это делает разметку каждой строки по-разному и делает чтение журналов отладки намного сложнее, чем нужно.

Есть ли в log4perl способ отформатировать строку так, чтобы метаданные отладки (все вплоть до самого сообщения журнала) дополнялись в конце пробелами / табуляциями и чтобы фактическое сообщение начиналось с того же столбца текста?

Ответы [ 2 ]

8 голосов
/ 26 ноября 2008

Вы можете заполнить отдельные поля, которые составляют ваши записи. Например, [pid =% 5P] всегда даст вам как минимум 5 символов для PID.

В разделе "Количественное определение заполнителей" в документах для Log :: Log4perl :: Layout приведены дополнительные сведения.

5 голосов
/ 26 ноября 2008

Есть несколько способов сделать это, хотя вы должны выяснить, какой из них лучше подходит для вашей ситуации:

  1. Используйте другого приложения, если вы работаете вживую. Пусть этот аппендер использует шаблон, который показывает только ту информацию, которую вы хотите. Например, если вы работаете в одном процессе, ваш альтернативный аппендидер может не указывать PID и временную метку. Вам может понадобиться только имя файла и номер строки.

  2. Используйте %n, чтобы поставить новые строки в нужном месте. Это делает его многострочным выводом, который немного сложнее разобрать позже, но вы можете выбрать другую последовательность для разделителя входной записи (скажем, литерал "[EOL]"), чтобы было легче читать запись по записи.

  3. Вход в базу данных вместо файла. Для своих отчетов выберите только те столбцы, которые вы хотите просмотреть.

  4. Записывайте все, но пишите фильтр, чтобы просмотреть специальный файл журнала, чтобы отобразить только те части, которые вы хотите увидеть, такие как только сообщения отладки, записи между определенными моментами времени, только записи, связанные с файл и т. д.

...