python,tailer和logrotate

时间:2011-12-29 05:15:29

标签: python

我在python中使用tailer来解析日志,但是如果在服务器上进行日志轮换则它会被破坏。可以使用什么决定?尾巴-f在popen - 它不是Pythonic方式

2 个答案:

答案 0 :(得分:0)

添加日志轮换功能并不困难。例如,如果您有:

for line in tailer.follow(open('test.txt')):
    print line

您可以向定期检查下一个文件名是否存在的函数添加回调。如果它存在,则跳出循环并在新文件上开始。

答案 1 :(得分:0)

logrotate事件接下来会发生:

  1. 日志文件的inode未更改,但日志已重命名为新名称(例如log.out.1)
  2. logrotate创建具有相同名称的新文件(log.out)(我不确定: - )
  3. 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/