gpt4 book ai didi

python - 使用子进程调用的程序 - 不打印记录器消息?

转载 作者:行者123 更新时间:2023-12-03 18:53:07 25 4
gpt4 key购买 nike

如果使用子进程调用该程序,则从程序的记录器获取消息会出现问题。

这是使用记录器将消息打印到文件和控制台窗口的程序 BooFoo.py:

import logging
LOG_FILENAME = 'example.log'
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logger = logging.getLogger('main')
logger.addHandler(logging.StreamHandler())
print 'print foo'
logger.info('logger boo')

这是 CallBooFoo.py 程序:
import subprocess
proc = subprocess.Popen(['python BooFoo.py'], bufsize=512, stdin = None,
stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
proc_out, proc_err = proc.communicate()
print proc_out

CallBooFoo.py 不会打印“logger boo”。知道如何解决这个问题吗?使用 os.system 有效,但由于其他一些原因不是解决方案。

最佳答案

logging.StreamHandler默认写入标准错误,而不是标准输出。您可以使用 logging.StreamHandler(sys.stdout) 将其更改为标准输出。反而。

您也可以保持代码不变,并打印 proc_err 的值。代替(或除此之外)proc_out在调用过程中。这将显示子进程的标准错误。

如果需要同时看到 stdout 和 stderr 混合在一起,可以将调用过程更改为:

proc = subprocess.Popen(['python BooFoo.py'], bufsize=512, stdin = None, 
stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell=True)
proc_out, proc_err = proc.communicate()
print proc_out

关于python - 使用子进程调用的程序 - 不打印记录器消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6098327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com