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

分类: 计算机技术
推荐阅读:
Windows安装Golang最新版本 首先,你需要下载Golang的最新安装包,你可以到官网去,Golang的官方网站为:golang.org,但这个网站国内用户无法访问,好在Google提供了第二个Golang下载页面:
Linux下查看端口是哪个程序在使用 在Linux系统下,如果你想知道某个端口是哪些程序在使用,你可以使用这一条命令来查看:
Golang实现字符串的MD5加密 本文将使用 golang 自带的 crypto/md5 库实现MD5的字符串加密;
Python zip()函数 zip() 函数用于将多个可迭代对象中的元素按顺序一一对应打包成一个个元组,返回一个可迭代的 zip 对象。
在Windows系统下启动和终止MySQL服务 Windows平台下要启动MySQL服务只需以管理员权限运行命令net start mysql80,要关闭服务运行net stop mysql80;
C语言获取整行输入的多种方法 在C语言中,有多种方法可以实现从标准输入流(stdin)中读取整行输入;最常见的方法是使用例如fgets()、scanf()、getchar()这些函数;