python实时处理log文件脚本
来源:互联网 发布:淘宝最恶毒的差评 编辑:程序博客网 时间:2024/06/15 03:26
本文和大家分享的是python入门中实时处理log文件脚本的相关操作,希望对python初学者有所帮助吧。
这个Python脚本是用来对实时文件的内容监控,比如Error 或者time out 字段都可以进行自定义;算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一下,真心希望博友们能够再指点一下(现在记录每次的文件大小值是输出到了一个文件中,并且里面还嵌套了有shell命令,这些我认为都是可以优化掉的吧,只是现在我还不知道怎么做);告警是基于zabbix,自定义的模板是120s执行一次
#!/usr/local/bin/python3.5###Destription: 实时读取log信息###Author: Danny Deng###Datetime: 2016-11-17import re,time,subprocess,os,linecache#####定义log文件
file_name = "/usr/local/nginx/logs/error.log"
file_number = "/usr/local/zabbix_agent/number.txt"
j = int(0)
seek = int(0)##判断过程:文件是否存在---判断存储日志大小的文件是否存在---判断number size 与 filesize的大小###定义函数按行读取文件内容def readline():####if判断seek是否大于0,大于则赋值,否则初始为0
while True:######定义文件,根据seek值进行每行读取,每次tell赋值给seek
with open(file_name,'r') as f:
global seek
#seek = seek
f.seek(seek)
data = f.readline()
if data:
seek = f.tell()
yield data
else:######Python变量转换为shell变量
global file_number
os.environ['seek'] = str(seek)
os.environ['file_number'] = str(file_number)
os.system('echo $seek > $file_number')
os.system('chown zabbix.zabbix $file_number')
returndef func_for():
j = int(0)
for i in readline():
f_find = re.findall(r"check time out", i,flags=re.IGNORECASE)
if "check time out" in f_find:
j += 1#####没有输出0,有值输出出现error匹配到的次数值
try:
print(j)
except NameError:
print(int("0"))###判断日志文件是否存在if os.path.isfile(file_name):###判断存储文件内容大小的文件是否存在
if os.path.isfile(file_number):####存在则读取文件size大小,赋值给seek_number
seek_number = int(linecache.getline(file_number, 1))####然后继续判断存储的文件大小与现在文件大小(确定文件是否是重新生成的)
if os.path.getsize(file_name) >= seek_number and seek_number > 0:
seek = seek_number
func_for()###若为新文件则,seek赋值为0
else:
#open(arg1, "a+").write("0")
#seek = int(linecache.getline(file_number, 1))
seek = int(0)
func_for()####file_number 不存在则新建,并赋值seek变量为0
else:
#open(file_number, "a+").write("0")
#seek = int(linecache.getline(file_number, 1))
os.environ['file_number'] = str(file_number)
os.system('echo 0 > $file_number')
os.system('chown zabbix.zabbix $file_number')
func_for()else:
print("Error")
quit()
来源:博客园
- python实时处理log文件脚本
- python生成log文件
- BAT脚本log文件问题
- 实时处理
- 实时处理
- Python 发送 RMAN 备份 Log 脚本
- Python 发送 RMAN 备份 Log 脚本
- nohup执行python脚本看不到log
- [Python]读写文件,处理log
- 使用python处理log文件
- python删除过期log文件
- 使用脚本清除/var/log下的log文件
- Bash脚本笔记一:清除log文件
- python读写文件脚本
- python脚本处理文件
- C++实时处理不断被写入的文件
- python读取.txt或.log文件
- python脚本检查文件内容
- Delphi 中生成指定范围不重复的随机数
- redis-trib创建redis集群错误
- jQuery源码阅读心得(一) 自调用匿名函数
- maven1—maven介绍及环境搭建
- 第7篇白板之图片旋转标记做成箭头(三)及quadraticCurveTo
- python实时处理log文件脚本
- Java 代码块、成员变量初始化、构造函数初始化顺序
- rem和em区别
- iperf3.0 hisi uclib 交叉编译
- android开发技能树(基础知识点)
- framework--怎么样使用bundle来共享资源
- iOS 性能调优(必须掌握)
- 更改word中的引号""问题
- gdbsever 使用说明