Nginx的http日志格式:
示例如下:
这里使用Python的glob模块来获取所有日志文件。日志文件每天0时进行备份,命名为nginx.log.YYMMDD。
模块linecache允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行。
使用python的re模块解析每一条日志。
其中body_bytes捕获非空字符串,而不是数字,因为日志里可能存在该字段值为“-”,即没有请求体。
date、method、request等参数可以采用以下方式进行提取。
使用python的time模块把时间转为时间戳。
产生文件time.log,内容如下:
1. 使用ElementTree模块,它是Python标准库中提供的一个XML解析模块,它使用简单,非常容易使用,可以降低内存占用。2. 使用lxml模块,它是一个高性能的XML和HTML解析器,可以有效的降低内存占用。
3. 使用iterparse()函数,它可以遍历XML文档,可以降低内存占用。
4. 使用xml.sax模块,它是一个基于事件驱动的XML解析器,可以有效的降低内存占用。