当前位置: 首页 > 面试题库 >

Python解析日志文件以实时提取事件

龚迪
2023-03-14
问题内容

我有一个将消息记录到文件的过程。

我想实现另一个进程(在Python中),该进程解析这些日志(将它们写入文件时),过滤我感兴趣的行,然后根据第一个进程的状态执行某些操作。

我想知道在继续编写自己的东西之前,是否有Python库中的内容是这样的。

此外,关于如何实现类似Python之类的想法将不胜感激。

谢谢。


问题答案:

C程序通常寻求当前位置以清除所有“文件结束”标志。但是正如@9000正确指出的那样,python显然会处理此问题,因此即使文件已到达文件末尾,您也可以重复读取同一文件。

但是,您可能需要处理不完整的行。如果您的应用程序按段编写日志,那么您要确保处理整行而不是整行。以下代码将完成此操作:

f = open('some.log', 'r')
while True:
    line = ''
    while len(line) == 0 or line[-1] != '\n':
        tail = f.readline()
        if tail == '':
            time.sleep(0.1)          # avoid busy waiting
            # f.seek(0, io.SEEK_CUR) # appears to be unneccessary
            continue
        line += tail
    process(line)


 类似资料:
  • 本文向大家介绍Python解析nginx日志文件,包括了Python解析nginx日志文件的使用技巧和注意事项,需要的朋友参考一下 项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: 其中一条真实记录样例如下: 其中,客户端型号信息用XXXXXXX代替。 项目中已经按照业务规则对Nginx日志文件进行了

  • 问题内容: 我刚刚开始学习Python,并想读取一个Apache日志文件,并将每行的一部分放入不同的列表中。 文件中的一行 172.16.0.3–[25 / Sep / 2002:14:04:19 +0200]“ GET / HTTP / 1.1” 401-“” Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.1 )Gecko / 20020827“ 根

  • 问题内容: 我正在尝试解析以这种格式记录的apache日志文件 以下是我正在测试的代码… 一些示例日志是: 关于此日志格式所需的正则表达式过滤器的任何想法? 问题答案: 我现在设法分开了…

  • 本文向大家介绍python 实时遍历日志文件,包括了python 实时遍历日志文件的使用技巧和注意事项,需要的朋友参考一下 open 遍历一个大日志文件 使用 readlines() 还是 readline() ? 总体上 readlines() 不慢于python 一次次调用 readline(),因为前者的循环在C语言层面,而使用readline() 的循环是在Python语言层面。 但是 r

  • 本文向大家介绍python实现定时提取实时日志程序,包括了python实现定时提取实时日志程序的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python定时提取实时日志的具体代码,供大家参考,具体内容如下 这是一个定时读取 实时日志文件的程序。目标文件是target_file. 它是应用程序实时写入的。 我要做的是,每个5秒钟,提取一次该日志文件中的内容,然后生成另一个文件,最后把