子进程运行时读取日志文件

时间:2020-03-04 13:44:36

标签: python logging subprocess tail

我有一个将日志输出到文件的进程,并且我试图制作一个python脚本来运行该进程,并且仅将其生成的日志输出到该日志文件中。

我在下面写的内容似乎做了我想要的,除了一个大问题:它永远不会存在while循环。我已经尝试了其他一些运气不佳的选择。

这里的任何帮助将不胜感激!我想值得一提的是,我也可以改用节点脚本...

import subprocess
import sh

process = subprocess.Popen(cmd)

log_tail = sh.tail("-f", log_file, _iter=True)

while process.returncode is None:
    sys.stdout.write(log_tail.next())
    sys.stdout.flush()
    process.poll()

1 个答案:

答案 0 :(得分:0)

tail -f命令将一直运行到明确中断为止,这就是为什么循环永远不会退出的原因。您可以尝试以下方法:

import subprocess

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()

,它将等到cmd终止并返回其在stdoutstderr中的输出流的内容。

相关问题