Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python记录跟踪守护进程_Python_Linux_File_Sysadmin - Fatal编程技术网

使用Python记录跟踪守护进程

使用Python记录跟踪守护进程,python,linux,file,sysadmin,Python,Linux,File,Sysadmin,我们有一个遗留的C编写的程序,可以将日志输出到文本文件,并且该程序能够每天旋转日志 e、 g 现在我想编写一个python守护进程,跟踪日志并将其注入DB,我的问题是 用Python跟踪文件的推荐方法是什么扭曲的或Pyinotify 如何处理守护进程停止并且需要恢复日志跟踪的情况?我应该将偏移量存储在另一个文件中吗 谢谢。我也遇到过类似的问题。 我的做法是: import io import time def checklog(fs,logfile): trytimes = 10

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

e、 g

现在我想编写一个python守护进程,跟踪日志并将其注入DB,我的问题是

  • 用Python跟踪文件的推荐方法是什么<代码>扭曲的或
    Pyinotify
  • 如何处理守护进程停止并且需要恢复日志跟踪的情况?我应该将偏移量存储在另一个文件中吗

  • 谢谢。

    我也遇到过类似的问题。 我的做法是:

    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;
    
    希望这有帮助

    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;