popen.stdout.readline()没法读取数据
popen.stdout.readline()无法读取数据
最近想写一个脚本实时监控Tomcat的日志文件,第一次使用python,请大家多多指点
我写的代码如下
代码总是停在popen.stdout.readline()这一行而不再输出,但是日志文件中明明已经存在ERROR数据。
尝试后发现只有大量存在ERROR数据时才会进行输出,一两行的报错信息根本就没反应。
我的理解是存在一定的缓存,只有输出一定数据量时才会传到管道中
如何让出现ERROR数据时便能实时进行输出?
或者有其他方法对日志文件进行监控也可以。
请大家不吝赐教,谢谢!
------解决思路----------------------
实际试了下,卡在grep,要加个参数...
------解决思路----------------------
grep --line-buffered "ERROR"
------解决思路----------------------
如果只是打印结果,那么不用python直接命令行。如果是需要python干其他事那么照你后来的不用grep...
最近想写一个脚本实时监控Tomcat的日志文件,第一次使用python,请大家多多指点
我写的代码如下
import subprocess
command='tail -f /opt/deployment/apache-tomcat-7.0.42/logs/catalina.out |grep "ERROR"'
popen=subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,shell=True)
while True:
line = popen.stdout.readline()
print line
代码总是停在popen.stdout.readline()这一行而不再输出,但是日志文件中明明已经存在ERROR数据。
尝试后发现只有大量存在ERROR数据时才会进行输出,一两行的报错信息根本就没反应。
我的理解是存在一定的缓存,只有输出一定数据量时才会传到管道中
如何让出现ERROR数据时便能实时进行输出?
或者有其他方法对日志文件进行监控也可以。
请大家不吝赐教,谢谢!
------解决思路----------------------
实际试了下,卡在grep,要加个参数...
------解决思路----------------------
grep --line-buffered "ERROR"
------解决思路----------------------
如果只是打印结果,那么不用python直接命令行。如果是需要python干其他事那么照你后来的不用grep...