Какой модуль CPAN может суммировать журналы ошибок Perl? - PullRequest
1 голос
/ 25 апреля 2010

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

Вероятно, это было бы довольно тривиально с хэшем и некоторыми дополнительными сложностями, я подумал, есть ли подходящий модуль на CPAN, который я мог бы использовать для выполнения этой задачи.будет либо тот, который конкретно суммирует журналы ошибок / предупреждений Perl, либо тот, который суммирует произвольные текстовые файлы.Любые предложения?

Редактировать:

Сайт, который я поддерживаю, был унаследован в состоянии, когда он генерирует 50 МБ предупреждений в день.Я ТОЛЬКО ищу повязку, на которую я могу подать заявку, чтобы указать на самые плодовитые.Log4Perl может прийти, как только у меня закончатся критические вещи, которые нужно исправить, но сейчас это не вариант.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2010

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

[Mon Apr 26 15:39:34 2010] [error] [client 69.12.220.202] syntax error at /var/www/cgi-bin/errortest.cgi line 8, near "{}"

Вот быстрый способ отправить сообщения об ошибках, отсортированных по наибольшему количеству вхождений, по адресу. Легко изменить на несколько адресов почты (или создать псевдоним, который идет на несколько адресов и отправлять на него.

cat LOGFILE |
perl -ple 's/\[\w+\s\w+\s\d+\s\S+\s\d+\]\s\[[^\]]+\]\s\[[^\]]+\]\s//;' |
sort |     # Sort errors after
uniq -c |  # Uniqify with count
sort -rn | # Sort line counts
mail -s "Error list" EMAIL@ADDRESS

Вы можете легко исключить строки, добавив grep -v в любую точку, которую вы считаете наиболее подходящей. Бросьте его в cron для ежедневных отчетов или вставьте в скрипт и добавьте в logrotate.

1 голос
/ 25 апреля 2010

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

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

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

Обновление

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

1 голос
/ 25 апреля 2010

Не модуль CPAN, а сайт loganalysis имеет несколько очень полезных инструментов и информацию о разборе и анализе журнала.

Кроме того, log_analysis , возможно, стоит посмотреть, как это реализовано в Perl.

...