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 判断自定义对象类型
Mar 21 Python
python在控制台输出进度条的方法
Jun 20 Python
Python中文竖排显示的方法
Jul 28 Python
Python实现命令行通讯录实例教程
Aug 18 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
Python3最长回文子串算法示例
Mar 04 Python
Django 多环境配置详解
May 14 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
什么是python类属性
Jun 10 Python
浅谈怎么给Python添加类型标注
Jun 08 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
PHP array_push 数组函数
2009/12/26 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
js三种排序算法分享
2012/08/16 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
python复制文件代码实现
2013/12/23 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
python基于phantomjs实现导入图片
2016/05/13 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python 表格打印代码实例解析
2019/10/12 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
大学生应聘自荐信
2013/10/11 职场文书
周年庆典主持词
2014/04/02 职场文书
六查六看六改心得体会
2014/10/14 职场文书
给病人的慰问信
2015/03/23 职场文书
法定代表人资格证明书
2015/06/18 职场文书
使用springMVC所需要的pom配置
2021/09/15 Java/Android