如何用 Python 实时监控文件?方法有三种你喜欢哪一种?

作者 : 开心源码 本文共750个字,预计阅读时间需要2分钟 发布时间: 2022-05-12 共189人阅读

在业务稳固性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去处理,比方要监控 nginx 的 request_time 和upstream_response_time 时间,分析出最耗时的请求,而后去改进代码,这时就要对日志进行实时分析了,发现时间长的语句就要报警出来,提示开发人员要关注,当然这是其中一个应用场景,通过这种监控方式还可以应用到任何需要判断或者分析文件的地方,所以今天我们就来看看如何用 python 实现实时监控文件,我给三个方法实例:

第一种:

这个是最简单的和容易了解的,由于大家都知道 linux 下有 tail 命令,所以你可以直接用 Popen() 函数去调用这个命令来执行获取输出,代码如下:

第二种:

采用 python 对文件的操作来实现,用文件对象的 tell(), seek() 方法分别得到当前文件位置和要移动到的位置,代码如下:

第三种:

利用 python 的 yield 来实现一个生成器函数,而后调用这个生成器函数,这样当日志文件有变化时就打印新的行,代码如下:

最后解释下 seek() 函数的用法,这个函数接收 2 个参数:file.seek(off, whence=0 ),从文件中移动 off 个操作标记(文件指针),正数往结束方向移动,负数往开始方向移动。假如设定了 whence 参数,就以 whence 设定的起始位为准,0 代表从头开始,1 代表当前位置,2 代表文件最末尾位置。

以上就是三个常用方法,具体日志分析的代码大家可以根据自己的业务逻辑去实现,完毕。

转载
原文链接:http://u6.gg/ftmS2

声明通知

第20期 Python零基础入门班

51Reboot 第20期 Python 零基础运维自动化【入门班】正在火热招生中

想要理解介绍请扫码咨询,备注“来源简书”

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何用 Python 实时监控文件?方法有三种你喜欢哪一种?

发表回复