使用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
}

转载声明
本文版权归作者所有

如需转载,请注明出处;本文地址: https://www.perfcode.com/p/use-python-to-process-nginx-log.html