通过 Python 脚本快速统计分析日志
从朋友那里拿到一个需求,根据日志分析统计并发情况,统计自定义时间段的用户流量,具体需求如下:
- 晒选某个时间点的数据:查找某天下午1:30到2:30这个时间段或者自己定义,看看到底有多少
- 同时筛选出两个项目标号的文档,统计和去重统计17/18
- babyhealth:[2016-05-03 19:21:23] INFO orderinfo:472 - v41/nbCode/getauth||1508031:17
上面第三行的内容就是日志的格式,简单分析了一下需求,shell 脚本、Excel 分列筛选透视、Python 都 可以解决,考虑到日志数量较大,通过 Excel 效率可能偏低,因此这里采用 Python 进行处理。
处理的主要思路是:
- 对日志文件内容进行分解。每条日志的关键信息有日期(2016-05-03)、时间(19:21:23)、值(1508031)、块(17),应用正则对日志进行逐行的匹配,提取关键信息,放到数据库中
- 在数据库中通过SQL语句进行统计
对于第一部分,代码如下:
1 |
|
以上程序在 Linux 和 Windows 下都可以执行,生成 log.db 数据库, Linux 下可以直接使用 Sqlite3 对数据库进行操作, Windows 下可以安装 SQLite Expert 进行操作和查询,查询语句如下:
1 |
|
为了提高方便程度,可以用 Python 操作 SQLite3 进行查询:
1 |
|
以上程序均基于 Python 2.7+ 环境。
通过 Python 脚本快速统计分析日志
https://blog.yuhaogao.com/2016/05/04/通过-Python-脚本快速统计分析日志/