Bonjour à tous. Comme je n'ai pas retrouvé mon état normal pendant le Nouvel An chinois, je n'ai pas partagé une vague de connaissances depuis longtemps. Aujourd'hui, je vais continuer à partager avec vous une vague de petites choses. scripts pour analyser les journaux en Python.
Tout d’abord, regardons à quoi ressemble le journal.
Ils sont tous au format XML. Vous avez le vertige rien qu'en les regardant ? ? C'est bon, analysons-le d'abord.
1. Le début de chaque paragraphe est catalina-exec, nous le diviserons donc en fonction de catalina-exec. Après la division, ils seront divisés en paragraphes.
2. Ensuite, nous allons le diviser en segments qui ont été divisés et trouver les mots-clés que vous souhaitez segmenter. Parce qu'il s'agit de XML, le travail suivant est simple, il s'agit d'un seul en-tête. .
3. Mais il y a un autre problème. Il est possible que certains d'entre eux n'aient pas les mots-clés que vous souhaitez, vous devez donc juger s'il n'y a pas un tel champ, alors je définirai ce champ comme étant vide. .
Lorsque les idées seront claires, le code deviendra naturellement plus simple.
Jetons ensuite un coup d'œil au code
#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()
Exécutez le code
Python a analysé les fichiers journaux au format XML et a exécuté avec succès toutes les données. Vérifiez ensuite le fichier
D'accord.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.
Pour plus d'articles liés à l'analyse python des fichiers journaux au format XML, veuillez faire attention au site Web PHP chinois !