• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python实现实时监控文件的方法

python实现实时监控文件的方法

作者:lijiao 字体:[增加 减小] 来源:互联网

lijiao 通过本文主要向大家介绍了python web实时日志,python实时显示,python 实时绘图,python 实时曲线,python 监控文件变化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

第一种:

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

logfile='access.log'
command='tail -f ‘+logfile+'|grep “timeout”‘
popen=subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
while True:
line=popen.stdout.readline().strip()
print line

</div>

第二种:

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

import time
file = open(‘access.log')
while 1:
where = file.tell()
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
else:
print line,

</div>

第三种:

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

import time
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == ‘__main__':
logfile = open(“access-log”,”r”)
loglines = follow(logfile)
for line in loglines:
print line,

</div>

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>

您可能想查找下面的文章:

  • python实时分析日志的一个小脚本分享
  • python实现实时监控文件的方法
  • python实现实时监控文件的方法
  • Python实时获取cmd的输出
  • Python实时获取cmd的输出
  • 使用Python编写提取日志中的中文的脚本的方法
  • 使用Python编写提取日志中的中文的脚本的方法

相关文章

  • python实现搜索本地文件信息写入文件的方法
  • Python遍历文件夹和读写文件的实现方法
  • Python获取远程文件大小的函数代码分享
  • Python生成随机验证码的两种方法
  • Python中使用OpenCV库来进行简单的气象学遥感影像计算
  • Python环境下安装使用异步任务队列包Celery的基础教程
  • 使用python的chardet库获得文件编码并修改编码
  • 使用python提取html文件中的特定数据的实现代码
  • Python群发邮件实例代码
  • Python实现计算最小编辑距离

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python中使用platform模块获取系统信息的用法教程
    • 浅谈插入排序算法在Python程序中的实现及简单改进
    • Python的Tornado框架实现图片上传及图片大小修改功能
    • Python中编写ORM框架的入门指引
    • 全面了解python字符串和字典
    • Python中用于检查英文字母大写的isupper()方法
    • Pycharm学习教程(3) 代码运行调试
    • Python爬取网页中的图片(搜狗图片)详解
    • 在Python的Django框架中创建和使用模版
    • python数据结构之图深度优先和广度优先实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有