使用Python记录尾部守护进程

时间:2012-10-30 04:00:40

标签: python linux file sysadmin

我们有一个遗留C编写的程序,可以将日志输出到文本文件,该程序可以每天旋转日志。

e.g。

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

现在我想编写一个python守护程序,它会拖尾日志并注入DB,我的问题

  1. 在Python中拖尾文件的推荐方法是什么? TwistedPyinotify
  2. 如何处理守护程序停止的情况,我们需要恢复日志尾部?我应该将偏移量存储在另一个文件中吗?
  3. 感谢。

1 个答案:

答案 0 :(得分: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;

希望这有帮助。