python解析基于xml格式的日志文件


Posted in Python onFebruary 25, 2017

大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本。

首先,同样的先看看日志是个啥样。

python解析基于xml格式的日志文件

都是xml格式的,是不是看着就头晕了??没事,我们先来分析一波。

1.每一段开头都是catalina-exec,那么我们就按catalina-exec来分,分了之后,他们就都是一段一段的了。

2.然后,我们再在已经分好的一段段里面分,找出你要分割的关键字,因为是xml的,所以,接下来的工作就简单了,都是一个头一个尾的。

3.但是还有一个问题,有可能有的里面没有你想要的关键字,所以你要判断下,如果没有这个字段,那么我就把这个字段设置为空。

思路清晰了,代码自然而然就简单了。

接下来我们就看看代码

#coding:utf-8 
import re 
#文本所在TXT文件 
file = 'iag_interface.log' 
#分割一段 
xml1='catalina-exec' 
xml2='catalina-exec' 
#关键字reqtimestamp 
time1 = '<timestamp>' 
time2 = '</timestamp>' 
#关键字functionid 
functionid1 = '<functionid>' 
functionid2 = '</functionid>' 
#关键字transid 
transid1='<transid>' 
transid2='</transid>' 
#关键字siappid 
siappid1='<siappid>' 
siappid2='</siappid>' 
#关键字userid 
userid1='<userid>' 
userid2='</userid>' 
#关键字mobnum 
mobnum1='<mobnum>' 
mobnum2='</mobnum>' 
f = open(file,'r',encoding= 'utf-8') 
#f = open(file,'r') 
#for (num,value) in enumerate(f): 
 #print("line number",num,"is:",value) 
buff = f.read() 
#清除换行符,请取消下一行注释 
#buff = buff.replace('\n','') 
pat = re.compile(time1+'(.*?)'+time2,re.S) 
pat1 = re.compile(functionid1+'(.*?)'+functionid2,re.S) 
pat2 = re.compile(transid1+'(.*?)'+transid2,re.S) 
pat3 = re.compile(siappid1+'(.*?)'+siappid2,re.S) 
pat4 = re.compile(userid1+'(.*?)'+userid2,re.S) 
pat5 = re.compile(mobnum1+'(.*?)'+mobnum2,re.S) 
pat6=re.compile(xml1+'(.*?)'+xml2,re.S) 
result6 = pat6.findall(buff) 
print(len(result6)) 
x = open("logfx.txt", 'w') 
x.write("===========================开始数据================================="+"\n") 
x.write("time"+"\t"+"functionid"+"\t"+"transid"+"\t"+"siappid"+"\t"+"userid"+"\t"+"mobnum"+"\n") 
for i in range(0,len(result6)): 
 result = pat.findall(result6[i]) 
 result1 = pat1.findall(result6[i]) 
 result2 = pat2.findall(result6[i]) 
 result3 = pat3.findall(result6[i]) 
 result4 = pat4.findall(result6[i]) 
 result5 = pat5.findall(result6[i]) 
 if len(result)==0: 
  result.append("空") 
 if len(result1)==0: 
  result1.append("空") 
 if len(result2)==0: 
  result2.append("空") 
 if len(result3)==0: 
  result3.append("空") 
 if len(result4)==0: 
  result4.append("空") 
 if len(result5)==0: 
  result5.append("空") 
 #print(result[0],"=",result1[0],"=",result2[0],"=",result3[0],"=",result4[0],"=",result5[0]) 
 x.write("timestamp:"+result[0]+"\t"+result1[0]+"\t"+result2[0]+"\t"+result3[0]+"\t"+result4[0]+"\t"+"mobnum:"+result5[0]+"\n") 
x.write("===========================结束数据================================="+"\n")  
print("执行完毕!生成文件logfx.txt") 
x.close()

运行下代码

python解析基于xml格式的日志文件

python解析基于xml格式的日志文件把所有数据运行成功了。接下来查看文件

python解析基于xml格式的日志文件

好了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
Python判断两个对象相等的原理
Dec 12 Python
python pygame实现2048游戏
Nov 20 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
用Python逐行分析文件方法
Jan 28 Python
Python循环结构的应用场景详解
Jul 11 Python
Python笔记之代理模式
Nov 20 Python
python学生信息管理系统实现代码
Dec 17 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
Django使用channels + websocket打造在线聊天室
May 20 Python
Python中防止sql注入的方法详解
Feb 25 #Python
Python 数据结构之旋转链表
Feb 25 #Python
Python数据结构之翻转链表
Feb 25 #Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 #Python
python函数的5种参数详解
Feb 24 #Python
Python实现读取文件最后n行的方法
Feb 23 #Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 #Python
You might like
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php检测url是否存在的方法
2015/04/14 PHP
php中yii框架实例用法
2020/12/22 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
python安装twisted的问题解析
2018/08/21 Python
pandas重新生成索引的方法
2018/11/06 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
记帐员岗位责任制
2014/02/08 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
党支部先进事迹材料
2014/12/24 职场文书
玄武湖导游词
2015/02/05 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python