我需要在运行时读取日志文件,并根据搜索将它们分成多个不同的文件。
由于日志文件将每天轮换,我使用了" 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
答案 0 :(得分:0)
首先,您的代码包含语法错误,因此我不认为您上面提供的代码与您实际使用的代码相同,或者您会注意到。我已经复制粘贴了您的样本,修复了两个错误并运行了它 - 结果如您所料,正确读取了新行。因此,我认为您的问题与此示例无关。