国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python腳本實時處理log文件的方法

2019-11-25 16:28:59
字體:
來源:轉載
供稿:網友

這個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,大于則賦值,否則初始為0while True:######定義文件,根據seek值進行每行讀取,每次tell賦值給seekwith open(file_name,'r') as f:global seek#seek = seekf.seek(seek)data = f.readline()if data:seek = f.tell()yield dataelse:######Python變量轉換為shell變量global file_numberos.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_numberseek_number = int(linecache.getline(file_number, 1))####然后繼續判斷存儲的文件大小與現在文件大小(確定文件是否是重新生成的)if os.path.getsize(file_name) >= seek_number and seek_number > 0:seek = seek_numberfunc_for()###若為新文件則,seek 賦值為0else:#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文件腳本,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长岭县| 大关县| 布拖县| 株洲市| 于都县| 陕西省| 大同市| 金山区| 辰溪县| 南岸区| 中宁县| 攀枝花市| 光泽县| 云南省| 马鞍山市| 龙胜| 岗巴县| 石家庄市| 汤阴县| 清丰县| 宁安市| 东乌珠穆沁旗| 阳高县| 邓州市| 岳西县| 巴林右旗| 讷河市| 宜阳县| 孝感市| 安阳市| 孟连| 长白| 贡嘎县| 邵东县| 扎赉特旗| 额尔古纳市| 自贡市| 榆中县| 宜兰县| 武汉市| 桃源县|