последние пять минут Log4j анализ журнала с использованием Python - PullRequest
1 голос
/ 14 ноября 2011

Я пытаюсь проанализировать журналы моих java-приложений (используя log4j), зарегистрированные за последние пять минут.Я планирую использовать Python для анализа журналов за последние пять минут и, если есть какие-либо предупреждения, я должен отправить мне письмо.

Может ли кто-нибудь подсказать мне, каков наилучший метод получения строк журнала за последние пять минут?

Я должен использовать Python для этого.

формат журнала, как показано ниже,

2011-11-14 10:15:46 WARN : sample warning
2011-11-14 10:15:47 WARN : sample warning
2011-11-14 10:15:48 WARN : sample warning
2011-11-14 10:15:49 WARN : sample warning

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Поскольку ваш лог-файл отсортирован в хронологическом порядке, вам придется его полностью проанализировать:

from datetime import datetime, timedelta
now = datetime.now()
lookback = timedelta(minutes=5)
oldest = (now - lookback).strftime('%Y-%m-%d %H:%M:%S')

lines = []

with open('logfile.log', 'r') as f:
    for line in f:
        if line[:19] > oldest:
            lines.append(line)

if lines:
    message = '\n'.join(lines)
    # send message per mail...
0 голосов
/ 14 ноября 2011

Анализ "последних 5 минут" не имеет большого смысла. Если бы это был я, я бы постоянно что-то запускал и ограничивал бы выдачу предупреждений каждые 5 минут.

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

Возможно, было бы намного проще отправить данные в ваш скрипт Python с использованием канала - и позволить python обрабатывать поворот .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...