Python 解析log日志

  • 软件环境
  • 环境搭建
  • 待解析log日志格式
  • log解析脚本
  • 解析后文本格式

软件环境

软件 版本 作用
Ubuntu 20.04 操作系统
python 3.8.10 python基础环境,提供正则匹配功能
python-dateutil 2.8.2 日期处理库

环境搭建

在终端命令行输入以下指令

sudo apt install python3.8 # 安装python3
python3.8 -m pip install python-dateutil # 安装 dateutil 包

待解析log日志格式

log日志一般具有时间戳、事件类型、事件产生对象、属性等,本文以具有下列形式的log日志为例

[2021-09-03 11:03:11]************************** EVENT ERROR **************************
[2021-09-03 11:03:11] DevID:  1
[2021-09-03 11:03:11] Attribute:  187[2021-09-03 11:05:17]************************** EVENT HEART **************************
[2021-09-03 11:05:17] DevID:  1
[2021-09-03 11:05:17] Attribute:  198[2021-09-03 11:06:20]************************** EVENT HEART **************************
[2021-09-03 11:06:20] DevID:  3
[2021-09-03 11:06:20] Attribute:  14[2021-09-03 11:10:41]************************** EVENT HEART **************************
[2021-09-03 11:10:41] DevID:  5
[2021-09-03 11:10:41] Attribute:  96[2021-09-03 11:16:34]************************** EVENT HEART **************************
[2021-09-03 11:16:34] DevID:  1
[2021-09-03 11:16:34] Attribute:  153

log解析脚本

import re
from dateutil.parser import *DEVID = 1
TAB = "    "def logparser():line_num = 0# locate EVENT HEARTpattern_heart = re.compile(r'EVENT HEART')# locate xxxx-xx-xx xx:xx:xxpattern_timestamp=re.compile(r'[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*')last_time = parse("2021-09-03 00:00:00")diff_time = parse("2021-09-03 00:00:00")outfile = open("./out.txt", "w+")with open("./log.txt") as f:lines = f.readlines()for line in lines:# look for event heartresult_heart = pattern_heart.findall(line)# no heart event in this lineif not result_heart:   line_num = line_num + 1continue;# 2 is the offset line of Attributeif line_num + 2 > len(lines):   print("END")return;# look for DevID, 1 is the offset line of DevIDDevID = lines[line_num + 1].split(":")[-1].strip()# check DevIDif DevID != str(DEVID):line_num = line_num + 1continue;# 2 is the offset line of AttributeAttribute = lines[line_num + 2].split(":")[-1].strip()# look for string according to regex patterntimestamps = pattern_timestamp.findall(line)# exist some matchesif timestamps:for timestamp in timestamps:timestamp = parse(timestamp)diff_time = timestamp - last_timelast_time = timestampoutfile.write(str(timestamp)+TAB+str(diff_time)+TAB+Attribute+"\n")line_num = line_num + 1else:line_num = line_num + 1print("FORMAT ERROR")f.close()outfile.close()if __name__ == "__main__":logparser()print("DONE")

解析后文本格式

2021-09-03 11:05:17    11:05:17    198
2021-09-03 11:16:34    0:11:17    153

Python 解析log日志相关推荐

  1. python解析log文件_python解析基于xml格式的日志文件

    大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本. 首先,同样的先看看日志是个啥样. 都是xml格式的,是不是看着就头晕了??没事,我 ...

  2. python多进程log日志问题_Python 如何安全地实现实现多进程日志以及日志正常的分割...

    在Python中我们经常需要使用到多进程来提高我们程序性能,但是多进程的编程中经常有各种各样的问题来困扰我们,比如多进程和多线程的公用导致的子进程的卡死,进程间的通信等问题.还有一个问题我们也许不经常 ...

  3. 【数据平台】Python解析Ngnix日志

    场景:Ngnix格式具有一定格式,通过python的正则表达式读取日志中每行的字段. Python正则表达式参考:https://docs.python.org/2/library/re.html 代 ...

  4. 使用Python解析nginx日志文件

    项目的一个需求是解析nginx的日志文件. 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: log_format main '$remote_a ...

  5. 【script】python 解析 Windows日志(python-evtx)

    Windows日志 模块安装 pip install python-evtx Windows日志 解析源码 源码 import mmap import contextlib import dateti ...

  6. Python logging log日志写入文件

    转载: https://www.cnblogs.com/nancyzhu/p/8551506.html 日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定 ...

  7. python之log日志模块

    logging的配置大致有下面几种方式. 1.        通过代码进行完整配置,logging.getLogger()获取logger后,给logger设置各种handler. 2.       ...

  8. python log日志_Python的log日志功能及设置方法

    引入:Python中有个logging模块可以完成相关信息的记录,在debug时用它往往事半功倍 一.日志级别(从低到高): DEBUG :详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期 ...

  9. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

最新文章

  1. JQueryMiniUI按照时间进行查询
  2. FM的调制matlab仿真
  3. 使用HSRP和SLB实现服务器群负载均衡和冗余
  4. 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )
  5. [云炬创业管理笔记]第五章打磨最有效的商业模式测试3
  6. 【CV】使用 scikit-image 进行图像处理
  7. 电音之王 对64bit int 取模
  8. 【mybatis】插入操作更新id
  9. hash和一致性hash
  10. js获取精确宽度/高度(带小数位像素)
  11. linux gcc 静态 动态链接库
  12. DELL服务器如何使用iDRAC安装操作系统
  13. “死机短信”缠上山寨手机 往下翻就死机黑屏
  14. 语言的流变_拔剑-浆糊的传说_新浪博客
  15. 教资科目二重点简答题总结
  16. matlab画图三维立体,matlab的三维图形绘制
  17. 如何防止短信验证被盗刷
  18. 白噪声检验python_python 加一个白噪声跟老齐学Python之Python安装
  19. 北海康成上市首日破发,药明生物等基石投资人合计亏损1.26亿港元
  20. 利用nfs共享漏洞获取系统文件

热门文章

  1. linux 2.6.28.7 各驱动代码位置(待验证,已验证为蓝色标识)
  2. “海外传播官”阿乐:让20万外国粉丝通过我“在中国生活”
  3. Rust交叉编译开发环境的搭建
  4. python函数介绍(20804字的带图超详细说明)
  5. Paul Graham:撼动硅谷的人(译文)
  6. Samsung/三星I9128 Galaxy Grand root教程_方法
  7. Android接入高德地图SDK 一引入高德sdk
  8. TensorRT(7):python版本使用入门
  9. 批量录入快递地址解决方案
  10. Transformer + RL:是强化学习魔高一尺,还是 Transformer 道高一丈? (1)