首页云计算 正文

Python动态监控日志的内容

2024-12-18 3 0条评论

本文介绍如何使用Python动态监控程序日志的内容,这里的动态指的是日志文件不断的追加新的日志内容,动态监控是指监控日志新追加的日志内容

日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件
程序只是简单的示例一下,监控test1.log 10秒,转向监控test2.log

程序监控使用是linux的命令tail -f来动态监控新追加的日志,

Github上有一个项目,使用Python实现的类似unix系统的tail -f(Unix tail follow implementation in Python) 项目地址是:https://github.com/kasun/python-tail

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #!/usr/bin/python # encoding=utf-8 # Filename: monitorLog.py import os import signal import subprocess import time logFile1 = “test1.log” logFile2 = ‘test2.log’ #日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件 #程序只是简单的示例一下,监控test1.log 10秒,转向监控test2.log def monitorLog ( logFile ) :     print ‘监控的日志文件 是%s’ % logFile     # 程序运行10秒,监控另一个日志     stoptime = time . strftime ( ‘%Y-%m-%d %H:%M:%S’ , time . localtime ( time . time ( ) + 10 ) )     popen = subprocess . Popen ( ‘tail -f ‘ + logFile , stdout = subprocess . PIPE , stderr = subprocess . PIPE , shell = True )     pid = popen . pid     print ( ‘Popen.pid:’ + str ( pid ) )     while True :         line = popen . stdout . readline ( ) . strip ( )         # 判断内容是否为空         if line :             print ( line )         # 当前时间         thistime = time . strftime ( ‘%Y-%m-%d %H:%M:%S’ , time . localtime ( time . time ( ) ) )         if thistime >= stoptime :             # 终止子进程             popen . kill ( )             print ‘杀死subprocess’             break     time . sleep ( 2 )     monitorLog ( logFile2 ) if __name__ == ‘__main__’ :     monitorLog ( logFile1 )

文章转载来自:trustauth.cn

文章版权及转载声明

本文作者:admin 网址:http://news.edns.com/post/217476.html 发布于 2024-12-18
文章转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码