python 3.x 分析日誌的模塊(正則匹配)

#導入正則模塊
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}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章