gpt4 book ai didi

使用 Popen 启动的 Python 服务有日志记录 stderr 和 stdout 重定向问题

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:54 32 4
gpt4 key购买 nike

我想从我的服务中记录所有日志,我正在启动它:

启动器.py:

subprocess.Popen(['myservice.py'])

服务.py:

import logging
log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
handler = logging.FileHandler('/var/log/myservice.log')
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
log.addHandler(handler)
.....

但问题是 stdout 和 stderr 没有写入 myservice.log

我正在测试:

with open("/var/log/myservice_out.log","w+") as out, open("/var/log/myservice_err.log","w+") as err:
subprocess.Popen(['myservice.py'],stdout=out,stderr=err)

但这并没有使用日志记录,我只想将所有消息(stderror、stdout)记录在一个文件中。
提前致谢。

最佳答案

一切正常

日志模块不会重定向 stdout 和 stderr。它可以根据您配置的处理程序写入 stdout/stderr,但它不应该重定向 stdout 或 stderr。

看来你真的想用os.dup2()service.py 中或将 stdoutstderr 参数指定给 subprocess.Popenlauncher.py

关于使用 Popen 启动的 Python 服务有日志记录 stderr 和 stdout 重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797991/

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