0

我们有一个遗留的C书面程序,可以将日志输出到文本文件,并且该程序能够每天轮换日志。

例如

app.log
app.log.2012-10-24
app.log.2012-10-23
..

现在我想编写一个 python 守护程序来跟踪日志并注入数据库,我的问题

  1. 在 Python 中尾随文件的推荐方法是什么?Twisted还是Pyinotify
  2. 如何处理守护进程停止并且我们需要恢复日志拖尾的情况?我应该将偏移量存储在另一个文件中吗?

谢谢。

4

1 回答 1

2

我遇到过类似的问题。我的方法是这样的:

import io
import time

def checklog(fs,logfile):
    trytimes = 10
    line = ''
    while line == '':
        time.sleep(1)
        line = fs.readline().replace('\n','')
        trytimes = trytimes - 1
        while trytimes == 0 and line == '':
            try:
                fs = io.open(logfile,'rb')
                fs.seek(0,2)
                trytimes = 10
                break
            except:
                time.sleep(10)
    return line,fs


logfile="app.log"
fs = io.open(logfile,'rb')
fs.seek(0,2)# seek to tail of the logfile
while True:
    line = fs.readline().replace('\n','')
    while line == '':
        line,fs = checklog(fs,logfile)
        #do something for line;

希望这可以帮助。

于 2012-10-31T02:34:26.977 回答