最后五分钟使用Python进行Log4j日志分析

时间:2011-11-14 12:59:46

标签: python log4j

我试图分析最近五分钟内记录的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 个答案:

答案 0 :(得分:3)

由于您的日志文件按时间顺序排序,因此您必须完全解析它:

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...

答案 1 :(得分:0)

分析“最后5分钟”并没有多大意义。如果是我,我会不停地运行并限制它每5分钟发出的警报。

(假设您希望坚持使用log4j写入文件...)虽然您可以在python代码中处理文件I / O,但使用“tail”将文件传输到脚本中可能更简单。显然你需要计划如何处理旋转日志文件 - 可能你已经有了一些机制 - 需要告诉它告诉python代码在轮换后重新打开它的文件句柄。

使用管道将数据发送到python脚本可能要简单得多 - 让python handle the rotation

无论哪个,don't forget to add a SIGALRM在没有任何日志消息的情况下强制执行检查事件。

相关问题