有个需求要分析nginx日志,也懒得去研究logstach之类的开源工具,干脆直接写一个脚本,自己根据需求来实现:

先看日志格式:我们跟别人的不太一样,所以没办法了:

12.195.166.35 [10/May/2015:14:38:09 +0800] "list.xxxx.com" "GET /new/10:00/9.html?cat=0,0&sort=price_asc HTTP/1.0" 200 42164 "http://list.zhonghuasuan.com/new/10:00/8.html?cat=0,0&sort=price_asc" "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; H60-L02 Build/HDH60-L02) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.4.0.558 U3/0.8.0 Mobile Safari/534.30"


上面是我的日志格式:

脚本如下:

#!/usr/bin/env python
#-*- coding:utf-8 –*-
#Author:xiaoluo
#QQ:942729042
#date:2015:05:12
import re
import sys
log = sys.argv[1]
ip = r"?P[\d.]*"
date = r"?P\d+"
month = r"?P\w+"
year = r"?P\d+"
log_time = r"?P

这里要指出的是。我当初是给正则匹配的时候单独封装一个函数的,这样就省去了下面每个函数要打开之前都要单独打开一遍文件,但是我return的时候只能用列表的形式返回,结果列表太大把我的内存耗光了,我的是32G的内存,15G的日志。

效果:

python 正则分析nginx日志_第1张图片

最后一个函数是统计每分钟,访问的数量