python实时监控文件大小_python实现实时监控文件的方法

在业务稳定性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决,比如要监控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

第二种:

采用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,

第三种:

利用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,

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

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

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

本文标题: python实现实时监控文件的方法

本文地址: http://www.cppcns.com/jiaoben/python/161581.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 算法函数,数据结构——算法之(012)( linux C 全部字符串操作函数实现)...

数据结构——算法之(012)( linux C 所有字符串操作函数实现)题目:实现linux C下常用的字符串操作函数题目分析:一、面试中可能经常遇到这样的问题:比如strcpy、memcpy、strstr二、参考了linux 内核代码,对linux大神表示感谢&#…

汇编 begin_【精品】小学作文500字汇编九篇

【精品】小学作文500字汇编九篇在我们平凡的日常里,大家或多或少都会接触过作文吧,作文可分为小学作文、中学作文、大学作文(论文)。你所见过的作文是什么样的呢?以下是小编为大家整理的小学作文500字9篇,希望能够帮助到大家。小学…

linux mkdir绝对路径,linux学习(六)绝对路径、相对路径、cd、mkdir、rmdir、rm(示例代码)...

一、绝对路径就是从根开始的,如:/root、/usr/local。二、相对路径相对于当前路径的,比如我们在当前路径下建立了一个a.txt。[[email protected] ~]# pwd/]# ls1.cap 33.txt Application iptables.bak oneinstack shellscripts1.ipt a.php Doc…

python3.6打包成exe可执行文件、已解决方案_Python 3.6打包成EXE可执行程序的实现...

1、下载pyinstallerpython 3.6 已经自己安装了pip,所以只需要执行 pip install pyinstaller就可以了2、打包程序进入到你你需要打包的目录;比如我在H:\xcyk开始打包,执行pyinstaller xxx.py我们发现,竟然报错!&#xf…

steam加速_Apex英雄Steam版锁60帧 GoLink免费加速器助力畅快_综合资讯

之前一度爆火的大逃杀游戏《Apex英雄》最近登录了Steam平台,并且支持与Origin平台数据互通。这让很多被烂橘子平台劝退的玩家选择了在Steam平台重新入坑《Apex英雄》,不过由于Steam版刚推出,免不得出现很多问题,很多玩家在进入游戏…

springboot主线程_Springboot对多线程的支持详解

Springboot对多线程的支持详解这两天看阿里的JAVA开发手册,到多线程的时候说永远不要用 new Thread()这种方式来使用多线程。确实是这样的,我一直在用线程池,到了springboot才发现他已经给我们提供了很方便的线程池机制。本博客代码托管在git…

信号灯文件锁linux线程,linux——线程同步(互斥量、条件变量、信号灯、文件锁)...

一、说明linux的线程同步涉及:1、互斥量2、条件变量3、信号灯4、文件读写锁信号灯很多时候被称为信号量,但个人仍觉得叫做信号灯比较好,因为可以与“SYSTEM V IPC的信号量”相区分(如有不同意见,欢迎探讨)。二、互斥量1、定义互斥…

wpf 大数据界面_24小时删!WPF 界面开发可视化数据源500行代码分享

通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。在本教程中,您将完成可视化数据源所需的步骤。应该执行以下步骤,本文我们将为大…

反向题在测试问卷信效度_(完整版)问卷信度效度检验

从统计数据质量角度谈调查问卷的设计质量一、引言从保证统计数据质量的统计工作过程看,统计数据质量可以被划分为统计设计质量、统计调查质量、统计整理质量、统计分析质量以及数据发布传输质量等。统计设计质量是保证统计数据质量的首要环节,在统计数据…

朋友圈加粗字体数字_数字+符码:医院数码导视系统畅想起来

(建筑平面设计图边缘有横竖轴线编码)医院导视系统要做到最简单、最清晰的表达,和谐地融入室内环境并具有一定的弹性,能够适应变化,并适应未来科技的发展,接纳信息化,与管理、服务互联互通。文 | 谷 建 中衡设计集团股…

linux用光盘作yum源实验步骤,Linux使用系统光盘作为YUM源

CentOS 使用方法挂载光盘Linux代码# mkdir /media/cdrom# mount /dev/cdrom /media/cdromyum源文件说明在 /etc/yum.repos.d/ 目录中有CentOS-Base.repo和CentOS-Media.repo两个文件CentOS-Base.repo 记录的是网络上的资源信息CentOS-Media.repo 记录的光盘上的资源信息&#x…

苹果x出现绿线怎么修复_苹果x听筒声音小,苹果x通话声音小怎么办

苹果x听筒声音小,苹果x通话声音小怎么办?相信使用苹果x手机的人大多都会遇见这类情况吧。iPhone手机出现听筒声音小的现象,首先我们要确定出现听筒声音小的故障原因是什么,如果是软件方面的原因造成的,就可以自己调试解决&#x…

wxpython输入框_基于wxPython的GUI实现输入对话框(1)

本文实例为大家分享了基于wxpython的gui实现输入对话框的具体代码,供大家参考,具体内容如下编程时,免不了要输入一些参数等,这时输入对话框就派上用处了:#-*- coding:utf-8 -*-#~ #-------------------------------------------------------------------…

linux grep -11,11个高级Linux字符类和括号表达式的grep命令

你是否曾经在你需要的一种局面搜索字符串,文字或图案的文件里面呢? 如果是,那么grep工具来在这样的情况下派上用场。grep的是为其匹配一个正则表达式搜索行纯文本数据的命令行实用程序。 如果您将分词的grep如 g/re/p,然后grep的含…

tortoisegitpull 并合_tortoiseGIT 本地分支创建合并

接下来是使用tortoiseGIT二、图解使用tortoiseGIT这里只是做一些最基本的功能的演示:创建版本库,提交(commit)文件,推送(push)文件,更新文件,创建分支。简介:git属于分布式版本控制器,其实每个人…

视频图像处理平台对比_对比传统智能结算,戈子视觉结算有了质的改变

相比于使用的RFID原理技术的传统智能结算台,戈子视觉结算台使用的是由戈子科技自主研发的视觉结算系统,其采用的是图像处理技术,通过对餐具扫描识别进行结算。相比于传统智能结算台,其在功能上有很大的提升与创新。戈子视觉结算系…

C语言中字符型和浮点型能否相加,C语言中数据结构的基本类型(整型、浮点型和字符型)...

#include int main(){/**********************************************************// 我们列出的是VS2008的内存占用情况// 一、整型变量的分类:// 1,基本整型,以int表示// 2,短整型,以short int表示,或以…

vs code linux opencv,ubuntu+vscode 测试运行opencv

ubuntuvscode 测试运行opencvubuntuvscode 测试运行opencv之前再ubuntu配置好了opencv,今天测试运行一下。1.创建一个文件夹opencvtest2.在文件夹内打开终端,创建一个cpp文件,再放一张图片。touch mian.cpp3.vim或者文本管理器打开 复制好程序vim命令&am…

wp自定义帖子没标签_拼多多搜索智能推广和自定义推广区别在哪里?

大家好我是牧童,商家在开多多搜索的时候,会发现推广方案中有个智能推广以及自定义推广,很多商家不知道该如何选择,然后就两个计划都建了。之后会发现有的时候智能推广的数据要比自定义推广好,但有的时候智能推广的数据…

python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c、java之类的运行速度快,应用Python实现主要是为了:1、证明我已经理解了这些…