用于运行时日志分离的python脚本

时间:2017-05-29 12:13:43

标签: python

我需要在运行时读取日志文件,并根据搜索将它们分成多个不同的文件。

由于日志文件将每天轮换,我使用了" getmtime"读取最新修改的日志文件,并在日志中更新时动态读取行,并将它们分隔为多个文件。

但是我的代码无法读取日志文件中的新行。在这里请求您的输入。

import time
import os
import glob

newest = max(glob.iglob('/var/log/*.log'), key=os.path.getmtime)

with open(newest,'r') as file, \
open(‘result1.log’, ‘w’) as output_file1, \
open(‘result2.log’, ‘w’) as output_file2, \
open(‘result3.log’, ‘w’) as output_file3:


    while 1:

        where = file.tell()
        line = file.readline()

        if not line:

           time.sleep(1)

           file.seek(where)

        else:

             if “abc” in line:

                 output_file1.write(line)

             if “def” in line:

                 output_file2.write(line)

             if “ghi” in line:

                 output-file3.write(line)

         newest1 = max(glob.iglob('/var/log/*.log'), key=os.path.getmtime)

         if newest1 != newest

             newest= newest1

             file = open(newest, 'r')

谢谢& Reagrds, Ankith

1 个答案:

答案 0 :(得分:0)

首先,您的代码包含语法错误,因此我不认为您上面提供的代码与您实际使用的代码相同,或者您会注意到。我已经复制粘贴了您的样本,修复了两个错误并运行了它 - 结果如您所料,正确读取了新行。因此,我认为您的问题与此示例无关。