Python脚本实时处理log文件的方法


Posted in Python onNovember 21, 2016

这个Python脚本是用来对实时文件的内容监控,比如 Error 或者 time out 字段都可以进行自定义;算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一下(还是初学者,大神们勿喷哈),真心希望博友们能够再指点一下(现在记录每次的文件大小值是输出到了一个文件中,并且里面还嵌套了有shell命令,这些我认为都是可以优化掉的吧,只是现在我还不知道怎么做);告警是基于zabbix,自定义的模板是120s执行一次

#!/usr/local/bin/python3.5
###Destription: 实时读取log信息
###Author: Danny Deng
###Datetime: 2016-11-17
import 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')
return
def 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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
Python中用PIL库批量给图片加上序号的教程
May 06 Python
python开发中range()函数用法实例分析
Nov 12 Python
python版本的仿windows计划任务工具
Apr 30 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
python实现图片压缩代码实例
Aug 12 Python
Python列表的切片实例讲解
Aug 20 Python
浅析python标准库中的glob
Mar 13 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
深入理解 Python 中的多线程 新手必看
Nov 20 #Python
详解python的数字类型变量与其方法
Nov 20 #Python
python中异常报错处理方法汇总
Nov 20 #Python
详解MySQL数据类型int(M)中M的含义
Nov 20 #Python
python制作websocket服务器实例分享
Nov 20 #Python
Flask框架的学习指南之用户登录管理
Nov 20 #Python
Flask框架的学习指南之制作简单blog系统
Nov 20 #Python
You might like
php你的验证码安全码?
2007/01/02 PHP
PHP模块memcached使用指南
2014/12/08 PHP
PHP实现事件机制的方法
2015/07/10 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
实例讲解PHP表单处理
2019/02/15 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
Python实现区域填充的示例代码
2021/02/03 Python
毕业求职自荐信格式是什么
2013/11/19 职场文书
四年级学生评语大全
2014/04/21 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
销售类求职信
2014/06/13 职场文书
会计岗位说明书
2014/07/29 职场文书
消防志愿者活动方案
2014/08/23 职场文书