在Python中读取日志文件并输出特定文本

时间:2011-09-26 14:57:19

标签: python logging loops

我有一段代码在写入日志时读取日志文件的最后一行。我想打印日志中出现的错误,基本上在line.startswith('Error')时开始打印,在line.startwith('End of Error')时完成打印。我的代码如下,有人可以帮我这个吗?

log = 'C:\mylog.log'
file = open(log, 'r')
res = os.stat(log)
size = res[6]
file.seek(size)

while 1:
    where = file.tell()
    line = file.readline()
    if not line:
        time.sleep(1)
        file.seek(where)
    else:
        if line.startswith('Error'):
        #print lines until you come to 'End of Error'

2 个答案:

答案 0 :(得分:1)

在循环之前初始化一个标志:

in_error = False

然后根据需要打开和关闭它:

if line.startswith('Error'):
    in_error = True
elif line.startswith('End of Error'):
    print(line)
    in_error = False
if in_error:
    print(line)

答案 1 :(得分:0)

使用subprocess模块简单地运行tail -F(资本F,在GNU平台上可用)并处理输出可能更容易。