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

首頁 > 網站 > Nginx > 正文

python實現的分析并統計nginx日志數據功能示例

2024-08-30 12:24:03
字體:
來源:轉載
供稿:網友

本文實例講述了python實現的分析并統計nginx日志數據功能。分享給大家供大家參考,具體如下:

利用python腳本分析nginx日志內容,默認統計ip、訪問url、狀態,可以通過修改腳本統計分析其他字段。

一、腳本運行方式

python count_log.py -f med.xxxx.com.access.log

二、腳本內容

#!/usr/bin/python# -*- coding: utf-8 -*-"""1.分析日志,每行日志按空格切分,取出需要統計的相應字段,作為字典的key,遍歷相加2.使用到字典的get方法,通過定義默認值,避免miss key的錯誤3.使用列表解析表達式4.使用sorted函數排序列表5.使用argparse傳入參數6.nginx日志格式:log_format     access_log  '$remote_addr - $remote_user [$time_local] $request '  '"$status" $body_bytes_sent "$http_referer" '  '"$http_user_agent" "$request_time"' '"$upstream_addr"' '"$upstream_response_time"';7.日志內容:222.xx.xxx.15 - - [07/Dec/2016:00:03:27 +0800] GET /app/xxx/xxx.apk HTTP/1.0 "304" 0 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "0.055""-""-"8.腳本運行結果:('106.xx.xx.46', '/gateway/xxx/user/mxxxxx/submitSelfTestOfSingleQuestion', '"200"', 299)('182.1xx.xx.83', '/', '"200"', 185)('222.xx.1xx.15', '/', '"200"', 152)('125.xx.2xx.58', '/', '"200"', 145)"""import argparsedef count_log(filename, num):  try:    with open(filename) as f:      dic = {}      for l in f:        if not l == '/n': # 判斷空白行          arr = l.split(' ')          ip = arr[0]          url = arr[6]          status = arr[8]          # 字典的key是有多個元素構成的元組          # 字典的get方法,對取的key的值加1,第一次循環時由于字典為空指定的key不存在返回默認值0,因此讀第一行日志時,統計結果為1          dic[(ip, url, status)] = dic.get((ip, url, status), 0) + 1    # 從字典中取出key和value,存在列表中,由于字典的key比較特殊是有多個元素構成的元組,通過索引k[#]的方式取出key的每個元素    dic_list = [(k[0], k[1], k[2], v) for k, v in dic.items()]    for k in sorted(dic_list, key=lambda x: x[3], reverse=True)[:num]:      print(k)  except Exception as e:    print("open file error:", e)if __name__ == '__main__':  parser = argparse.ArgumentParser(description="傳入日志文件")  # 定義必須傳入日志文件,使用格式-f filename  parser.add_argument('-f', action='store', dest='filename', required=True)  # 通過-n傳入數值,取出最多的幾行,默認取出前10  parser.add_argument('-n', action='store', dest='num', type=int, required=False, default=10)  given_args = parser.parse_args()  filename = given_args.filename  num = given_args.num  count_log(filename, num)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python日志操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 余干县| 洮南市| 沧州市| 栾城县| 宾川县| 庆云县| 东丰县| 华阴市| 德兴市| 潍坊市| 托克逊县| 涿州市| 卢湾区| 北宁市| 巫溪县| 陇川县| 莱西市| 商水县| 江门市| 文昌市| 资溪县| 韩城市| 轮台县| 武义县| 六枝特区| 霍山县| 怀安县| 九龙城区| 绥宁县| 乌兰察布市| 沅陵县| 盐亭县| 武宣县| 桑植县| 南澳县| 含山县| 桃江县| 阳新县| 梁平县| 桃江县| 靖宇县|