跳转到主要内容

解析Apache访问日志

项目描述

Project Status: Active — The project has reached a stable, usable state and is being actively developed. https://travis-ci.cn/jwodder/apachelogs.svg?branch=master https://codecov.io/gh/jwodder/apachelogs/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/apachelogs.svg MIT License https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg

GitHub | PyPI | 文档 | 问题 | 变更日志

apachelogs 解析Apache访问日志文件。传入一个 日志格式字符串 并获取该格式日志条目的解析器。 apachelogs 还负责解码转义序列,并将时间戳、整数和连字符转换为 datetime 值、intNone

安装

apachelogs 需要 Python 3.5 或更高版本。只需使用 Python 3 的 pip 安装 apachelogs 及其依赖项

python3 -m pip install apachelogs

示例

解析单个日志条目

>>> from apachelogs import LogParser
>>> parser = LogParser("%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"")
>>> # The above log format is also available as the constant `apachelogs.COMBINED`.
>>> entry = parser.parse('209.126.136.4 - - [01/Nov/2017:07:28:29 +0000] "GET / HTTP/1.1" 301 521 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"\n')
>>> entry.remote_host
'209.126.136.4'
>>> entry.request_time
datetime.datetime(2017, 11, 1, 7, 28, 29, tzinfo=datetime.timezone.utc)
>>> entry.request_line
'GET / HTTP/1.1'
>>> entry.final_status
301
>>> entry.bytes_sent
521
>>> entry.headers_in["Referer"] is None
True
>>> entry.headers_in["User-Agent"]
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
>>> # Log entry components can also be looked up by directive:
>>> entry.directives["%r"]
'GET / HTTP/1.1'
>>> entry.directives["%>s"]
301
>>> entry.directives["%t"]
datetime.datetime(2017, 11, 1, 7, 28, 29, tzinfo=datetime.timezone.utc)

解析充满日志条目的文件

>>> with open('/var/log/apache2/access.log') as fp:  # doctest: +SKIP
...     for entry in parser.parse_lines(fp):
...         print(str(entry.request_time), entry.request_line)
...
2019-01-01 12:34:56-05:00 GET / HTTP/1.1
2019-01-01 12:34:57-05:00 GET /favicon.ico HTTP/1.1
2019-01-01 12:34:57-05:00 GET /styles.css HTTP/1.1
# etc.

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

apachelogs-0.6.0.tar.gz (31.4 kB 查看哈希值)

上传时间 源代码

构建分发

apachelogs-0.6.0-py3-none-any.whl (18.3 kB 查看哈希值)

上传时间 Python 3

由以下支持