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 相关文章推荐
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
Python实现的个人所得税计算器示例
Jun 01 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
简单了解python的内存管理机制
Jul 08 Python
python对csv文件追加写入列的方法
Aug 01 Python
Python flask路由间传递变量实例详解
Jun 03 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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写MySQL数据 实现代码
2009/06/15 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP可变变量学习小结
2015/11/29 PHP
CI框架常用函数封装实例
2016/11/21 PHP
PHP实现八皇后算法
2019/05/06 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
javascript trie前缀树的示例
2018/01/29 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Python验证码截取识别代码实例
2020/05/16 Python
ASP.NET Core中的配置详解
2021/02/05 Python
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
一份报关员的职业规划范文
2014/01/08 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
优秀员工事迹材料
2014/12/20 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
分享3个非常实用的 Python 模块
2022/03/03 Python