popen.stdout.readline()没法读取数据

popen.stdout.readline()无法读取数据
最近想写一个脚本实时监控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...