Python日志解析器

时间:2016-04-27 05:13:27

标签: python parsing logging

我有一个包含多个命令的大型日志(以;结尾)及其输出(直到END),如下所示:

<blabla;

foo
...
...

END

<xyz;

...
...

END

--and so on

要求使用具有命令名称的单独文件,如

blabla
xyz

并且在每个文件中应该是它们各自的输出。

到目前为止,我有:

def generateDicts(log_fh):
currentDict = {}
for line in log_fh:
    if line.endswith(";"):
       if line.endswith("END"):
          yield currentDict
       currentDict = {""}
   else:
      currentDict["text"] += line
yield currentDict

with open("logfile.txt") as f:
print list(generateDicts(f))

请帮忙。

2 个答案:

答案 0 :(得分:1)

你的帖子说你需要写文件,但你的例子没有做任何文件I / O.这是一个打开,关闭和写入文件的程序。

label

答案 1 :(得分:0)

您可以使用re模块

import re
with open('test','r') as f,open('output','w') as f1:
    f1.write("\n".join(re.findall(r'\<(\w+)\;',f.read())))

输出:

blabla
xyz

但是,如果文件太大,您可以考虑从文件中逐行读取,而不是整体读取。