我在python中使用tailer来解析日志,但是如果在服务器上进行日志轮换则它会被破坏。可以使用什么决定?尾巴-f在popen - 它不是Pythonic方式
答案 0 :(得分:0)
添加日志轮换功能并不困难。例如,如果您有:
for line in tailer.follow(open('test.txt')):
print line
您可以向定期检查下一个文件名是否存在的函数添加回调。如果它存在,则跳出循环并在新文件上开始。
答案 1 :(得分:0)
logrotate事件接下来会发生:
tailer模块仍将查看旧文件inode。
您必须监视日志文件的inode值以获取正确的日志跟踪。 这就是'tail -F'的用途。
正如您在其源代码中所看到的,tailer模块尚未设计为跟踪源文件的logrotation:它基于配方
http://code.activestate.com/recipes/157035/
并且对您的任务没有用处。
请查看源食谱的评论。
-
P.S。或者使用我的那个,它是'tail -f'的包装:)
http://code.activestate.com/recipes/577398-tail-f-with-inode-monitor/