首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -从日志文件读取10分钟

Python -从日志文件读取10分钟
EN

Stack Overflow用户
提问于 2014-07-24 19:43:05
回答 2查看 1.1K关注 0票数 0

我需要一些工具来读取我的日志文件中最新的10分钟条目,如果一些单词被记录下来,那么打印一些文本。

日志文件:

代码语言:javascript
复制
23.07.2014  09:22:11   INFO Logging.LogEvent   0  Failed login test@test.com
23.07.2014  09:29:02   INFO Logging.LogEvent   0  login test@test.com
23.07.2014  09:31:55   INFO Logging.LogEvent   0  login test@test.com
23.07.2014  09:44:14   INFO Logging.LogEvent   0  Failed login test@test.com

如果在过去10分钟内某个条目=失败的-print报警。

我所做的就是查找“失败的”匹配,但是我不知道如何在我的日志文件中检查最近10分钟;/ -any idea??

代码语言:javascript
复制
from sys import argv
from datetime import datetime, timedelta

with open('log_test.log', 'r') as f:
    for line in f:
        try:
            e = line.index("Failed")
        except:
            pass
        else:
            print(line)
EN

回答 2

Stack Overflow用户

发布于 2014-07-24 20:04:40

您的格式%d.%m.%Y比可用于字符串比较的%Y:%m:%d更差。

我们也不知道log是否很大,以及它是否被排序。如果没有排序(这在多线程应用程序中很常见),则必须分析每一行并将其转换为datetime:

代码语言:javascript
复制
def get_dt_from_line(s):
    return datetime.datetime.strptime(s[:20], '%d.%m.%Y  %H:%M:%S')

然后使用它作为过滤器(对于小文件):

代码语言:javascript
复制
    MAX_CHECK_TIMEDELTA = datetime.timedelta(minutes=10)
    LOG_START_ANALYZE_DATETIME = (datetime.datetime.today() - MAX_CHECK_TIMEDELTA)
    lines = [s for s in TXT.split('\n') if 'Failed' in s and get_dt_from_line(s) >= LOG_START_ANALYZE_DATETIME]
    print('\n'.join(lines))

对于大文件,您可以逐行读取文件。

如果您的日志文件只有一天,您可以使用字符串比较而不是日期时间比较:

代码语言:javascript
复制
LOG_START_ANALYZE_DATETIME = (datetime.datetime.today() - datetime.timedelta(minutes=10)).strftime('%d.%m.%Y  %H:%M:%S')
lines = [s for s in TXT.split('\n') if 'Failed' in s and s >= LOG_START_ANALYZE_DATETIME]
票数 0
EN

Stack Overflow用户

发布于 2014-07-24 19:48:14

如果我是你,我会逐行查找,获取第一行的时间戳,然后迭代,直到第一个日期与当前日期之间的差异超过10分钟,同时计算单词"Failed“的出现次数。

我认为您可以通过在空格后面拆分行来解决问题。但是要小心,如果有一天,你的日志格式改变了,你的脚本可能也不会工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24932730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档