2012-10-30 125 views
0

我们有一个传统的C写入程序,它将日志输出到文本文件,并且该程序能够每天轮换日志。用Python登录尾部守护进程

例如

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

现在我想写一个python守护进程,尾日志,并注入到DB,我的问题

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

谢谢。

回答

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; 

希望这有助于。