안녕하세요 여러분. 제가 설날에 정상적인 상태로 돌아오지 못해 오랫동안 지식의 물결을 나누지 못했습니다. 오늘은 계속해서 작은 소식을 전해 드리겠습니다. Python에서 로그를 구문 분석하기 위한 스크립트입니다.
우선 로그가 어떻게 보이는지 살펴보겠습니다.
보기만 해도 어지러우시죠? ? 괜찮아, 먼저 분석해 보자.
1. 각 문단의 시작은 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 형식 로그 파일과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!