Разобрать файл журнала log4j - PullRequest
7 голосов
/ 24 февраля 2010

У нас есть несколько приложений, которые используют log4j для ведения журнала. Мне нужно, чтобы синтаксический анализатор log4j работал, чтобы мы могли объединить несколько файлов журналов и выполнить автоматический анализ их. Я не собираюсь изобретать велосипед, поэтому кто-то может указать мне на приличный уже существующий парсер? У меня есть шаблон преобразования log4j, если это поможет.

Если нет, мне придётся катиться самостоятельно.

Ответы [ 5 ]

8 голосов
/ 02 марта 2010

Я не осознавал, что Log4J поставляется с приложением XML.

Решение заключалось в следующем: укажите XML-приложение в файле конфигурации ведения журнала, включите этот выходной XML-файл как сущность в правильно сформированный XML-файл, а затем проанализируйте XML, используя ваш любимый метод.

Другие методы имели следующие ограничения:

  • Apache Chainsaw - недостаточно автоматизирован
  • jdbc - низкая производительность в высокопроизводительном распределенном приложении
3 голосов
/ 22 января 2014

Вы можете использовать OtrosLogViewer с пакетной обработкой . Вы должны:

  1. Определите формат журнала, вы можете использовать Анализатор макета шаблона Log4j или Log4j XmlLayout
  2. Создание класса Java, который реализует LogDataParsedListener . Метод public void logDataParsed (данные LogData, контекст BatchProcessingContext) будет вызываться для каждого проанализированного события журнала.
  3. Создать банку
  4. Запустите OtrosLogViewer с указанием файла обработки журнала, реализации LogDataParsedListener и файлов журнала.
2 голосов
/ 24 февраля 2010

То, что вы ищете, называется SawMill , или как-то так .

1 голос
/ 24 февраля 2010

Файлы журнала Log4j не очень подходят для анализа, они слишком сложны и неструктурированы. Я считаю, что есть сторонние инструменты, которые могут это сделать (например, Sawmill).

Если вам необходимо выполнить автоматический настраиваемый анализ журналов, вам следует рассмотреть возможность входа в базу данных и анализа этого. JDBC поставляется с JdbcAppender, который добавляет все сообщения в базу данных по вашему выбору, но это влияет на производительность, и это немного ненадежно. Есть и другие, похожие, альтернативы на веб-сайте (например, этот ).

0 голосов
/ 01 марта 2010

Вы можете использовать Chainsaw V2 в Log4j для обработки различных файлов журнала и сбора их в одну таблицу, а затем либо выводить эти события в формате xml, либо использовать встроенную в Chainsaw поддержку фильтрации, поиска и раскрашивания для нарезки и нарезки журналы.

Шаги: - Запустить бензопилу V2 - Создайте файл конфигурации бензопилы, скопировав пример файла конфигурации, доступный на вкладке «Добро пожаловать» - определите одну запись «plugin» LogFilePatternReceiver для каждого файла журнала, который вы хотите обработать - Запустите бензопилу с этой конфигурацией - Каждый файл журнала заканчивается отдельной вкладкой в ​​пользовательском интерфейсе. - Приостановить вкладку журнала цепной пилы и очистить события от этой вкладки - Создайте новую вкладку, которая объединяет события из различных вкладок, перейдя в пункт меню «view, crate custom expression logpanel» и введите «level> = DEBUG» в поле. Он создаст новую вкладку, содержащую события со всех вкладок с уровнем> = debug (именно поэтому вы очистили вкладку журнала цепной пилы).

Обзор синтаксиса выражений, используемых для фильтрации, раскрашивания и поиска, можно найти в руководстве (доступно в меню «Справка»).

Если вы не хотите использовать бензопилу, вы можете сделать что-то подобное - запустить простое приложение, которое не регистрирует, но загружает файл конфигурации log4j.xml с записями «плагина», которые вы определили для конфигурации цепной пилы, но также определите FileAppender с xmllayout - все события, полученные «получателями», будут отправлены одному аппендеру.

...