Nginx的http日志格式:
示例如下:
这里使用Python的glob模块来获取所有日志文件。日志文件每天0时进行备份,命名为nginx.log.YYMMDD。
模块linecache允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行。
使用python的re模块解析每一条日志。
其中body_bytes捕获非空字符串,而不是数字,因为日志里可能存在该字段值为“-”,即没有请求体。
date、method、request等参数可以采用以下方式进行提取。
使用python的time模块把时间转为时间戳。
产生文件time.log,内容如下:
可以使用beautifulsoup解析,或者自己使用正则表达式:(import re)
首先获取所有的tr标签内的内容
tr_tags = re.findall(r"<tr>(?P[\w\W]*?)</tr>", jsp_html_content)
对于每个tr内的标签内容:
for tag in tr_tags:
first_str = re.findall(r"title=\"(?P[\w\W]*?)\"", tag)[0]
second_str = re.findall(r"encode(\"(?P[\w\W]*?)\"", tag)[0]
third_str = re.findall(r"%>\">(?P[\w\W]*?)</a>", tag)[0]
此时first_str, second_str, third_str 就对应于【文件中所有的 "文件11", "/file/1文件11.pdf", "文件11" 这三个信息"】