解析apache访问日志

apachelogs的Python项目详细描述


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

GitHub |PyPI |Documentation |Issues |Changelog

apachelogs解析apache访问日志文件。把它传给log format string然后拿回来 该格式的日志文件项的分析器。apachelogs甚至负责 解码转义序列并转换时间戳、整数和 空连字符到datetimevalues、ints和Nones。

安装

apachelogs需要python 3.5或更高版本。只需对python 3使用pip(您有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.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajsoup:select(div[class=rslt prod])在不应该返回null时返回null   java如何使用selenium下载POST响应文件   Java代码在逐步调试模式下运行良好,而不是在默认运行模式下   postgresql如何检查所选区域的lat/lon是否在使用Java的数据库中定义的范围内   java在web服务中是否有类似侦听器的功能?   java如何使用Hibernate条件实现这个多重选择和where查询?   swing使用java创建图像文件   java将一个类连接到主类   java将EditText更改为TextView   Java/Kotlin在for循环中为步骤+1和if条件之前的步骤获取值   java取消@Asynchronous EJB调用   C语言中的java代理服务器#   java我应该在哪里创建构造函数,不应该在哪里创建构造函数?   Java用户输入nextLine()不等待输入   java如何在JPA元素集合中从子元素获取父元素?   java GWT代码如何使用换行符强制工具提示?   java如何停止在控制台上打印异常堆栈跟踪?