python 3.x 分析日誌的模塊(正則匹配)
阿新 • • 發佈:2018-02-09
默認值 .get 文件 file 打印 files 日誌 當前 表達式
#導入正則模塊
import re
auth="no_shutdown_"
‘‘‘
分析日誌的模塊,查找日誌中標誌性信息產生的次數
‘‘‘
#定義你需要查找的對象的正則表達式wordcheck
#需要分析的日誌的路徑filesource
def checklog(wordcheck,filesource):
#定義一個空的字典用來存放查詢的結果
size={}
#異常捕獲當文件不存在的時候拋出異常
try:
#打開日誌文件
file=open(filesource,"r")
#循環讀取日誌文件的每一行
for i in file:
#使用re模塊的search功能查找當前行是否能和正則匹配
x=re.search(wordcheck,i)
#如果匹配到結果則執行if中的代碼
if x:
#取出查詢到的結果
tmp=x.group()
#get函數作用是如果字典中取不到key的值則賦一個默認值,也就是每一次查詢到一個新的結果就將這個結果作為key vlaue=0新加到字典中
size[tmp]=size.get(tmp,0)
#在字典中將value加1,記錄一次查找
size[tmp]+=1
#關閉文件
file.close()
#如果有異常拋出文件異常
except FileExistsError as e:
print(e)
#沒有異常打印結果
else:
return size
#測試分析apache訪問日誌中的所有訪問過的ip和次數
rs=checklog("(\d+\.){3}\d+","/var/log/httpd/access_log")
print(rs)
結果
因為是測試機上的日誌結果比較少
{‘127.0.0.1‘: 58, ‘192.168.2.254‘: 10}
python 3.x 分析日誌的模塊(正則匹配)