使用Python处理Nginx日志
Nginx日志中包含每个HTTP请求的客户端地址、时间、请求方法和页面、返回状态码、返回数据大小,UserAgent这些信息,本文的目的是在Python中使用正则表达式对这些信息进行格式化处理。
示例代码如下:
import re
def extract_nginx_log(log):
regex = re.compile(
'''(?P<remote_addr>[\d\.]{7,})\
- - (?:\[(?P<datetime>[^\[\]]+)\])\
"(?P<request>[^"]+)" (?P<status>\d+)\
(?P<size>\d+) "(?:[^"]+)"\
"(?P<user_agent>[^"]+)"''')
return regex.match(log).groupdict()
with open('access.log','r') as fp:
for line in fp.readlines():
print(extract_nginx_log(line)['remote_addr'])
这段代码将打印Nginx日志文件里的所有访问IP地址;
extract_nginx_log()
函数用于处理单条日志,返回一个字典:
{
'remote_addr' :'', #访问者地址
'datetime' :'', #访问时间
'request' :'', #请求方法和页面
'status' :'', #返回状态码
'size' :'', #返回数据大小
'user_agent' :'' #UserAgent
}