Есть ли анализатор файлов журнала для файлов log4j?

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

Я ищу следующие возможности:

  • Инструмент должен сказать мне, сколько раз выполнялся заданный оператор журнала или трассировка стека, желательно с поддержкой некоторых типов шаблонов (например, количество операторов журнала, соответствующих "Пользователь [a-z] * вошел в систему" ).
  • Было бы неплохо иметь разбивку по уровню журнала (сколько строк INFO, DEBUG) и по классу, инициировавшему сообщение журнала.
  • Разбивка по дате (сколько журнальных операторов за данный период времени)
  • Какие строки журнала встречаются вместе?
  • Поддержка нескольких файлов, так как я использую ведение журнала
  • Анализ горячих точек: найдите, если есть некоторый период времени, когда необычно большое количество операторов журнала
  • Либо в командной строке, либо в графическом интерфейсе.
  • Open Source предпочтительнее, но меня также интересуют коммерческие предложения.

В моей конфигурации log4j используется org.apache.log4j.PatternLayout с шаблоном %d %p %c - %m%n, но это может быть адаптировано для инструмента анализатора.

Ответ 1

(отказ от ответственности: я один из разработчиков, способствующих Chainsaw V2)

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

Вы загружаете несколько журнальных файлов в Chainsaw (по умолчанию все события для файла журнала помещаются на вкладку, зависящую от файла журнала). Вы также можете определить "настраиваемый лог-панель выражения", который будет агрегировать события со всех вкладок на новую вкладку, соответствующую выражению, которое вы предоставили, - подобно представлению базы данных, вы можете использовать выражение "LEVEL >= WARN" для сбора всех предупреждений, ошибки и фатальные сообщения из любого файла журнала в один вид.

Некоторые примеры выражений, которые могут использоваться для раскраски, поиска или фильтрации событий:

  • msg like 'Пользователь [a-z] * вошел в систему'
  • msg ~ = login || msg ~ = logout
  • уровень > INFO
  • существует исключение
  • timestamp <= '2010/04/06 15:05:35'

Единственный способ получить "counts" в настоящее время - определить выражение в поле "уточнить фокус" (количество событий, соответствующих выражению, будет отображаться в строке состояния).

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

Когда выйдет следующая версия Chainsaw V2, я надеюсь, что вы дадите ей спину - это Open Source, бесплатно, и нас всегда интересуют предложения и отзывы.

Ответ 2

Я предлагаю Splunk. Он обеспечивает быстрый, похожий на Google поиск в лотах (терабайтах) журналов, легко фильтруется (например, по уровню журнала или дате), упрощает корреляцию с транзакциями нескольких связанных журнальных событий и т.д.

Есть загружаемая версия, которая бесплатна, если вы индексируете менее 500 МБ журналов в день.

Ответ 5

Вы можете попробовать LogSaw, это программное обеспечение с открытым исходным кодом на основе Eclipse и которое активно сейчас...

Ответ 6

Возможно, немного поздно, но LogMX делает все это и очень активно в течение многих лет. Это не open-source, но он мощный, даже если он не кажется!

Ответ 8

Я создал для этого настраиваемый инструмент: https://plus.google.com/u/0/102275357970232913798/posts/Fsu6qftH2ja

Alfa - это инструмент графического интерфейса для анализа файлов журнала. Обычно вы вынуждены искать данные в них с помощью редакторов. Вы открываете журнал, снова и снова нажмите Ctrl-F и кнопку "Далее", затем перезагрузите файл по мере его изменения и повторите поиск. Alfa сопоставляет файл журнала с базой данных, позволяя вам использовать стандартные SQL-запросы для получения данных без каких-либо лишних действий.