Python:redirect_stdout 无法捕获记录器

car*_*rne 9 python logging stdout

我正在尝试重定向一些日志输出。

import sys
import logging
from contextlib import redirect_stdout

logging.basicConfig(stream=sys.stdout)
logger = logging.getLogger()

with open("out.txt", "w") as f:
    with redirect_stdout(f):
        print("STDOUT")
        logger.warning("LOGGER")
Run Code Online (Sandbox Code Playgroud)

我希望这两个内容都输出到文件,然后out.txt显示在终端中。STDOUTWARNING:root:LOGGER

我已经通过删除重定向内容并运行来确认该记录器正在输出。然后一切都会进入文件,正如它应该的那样。stdoutpython script.py > stdout.txt

那么一定logger是做了一些奇怪的事情导致它无法被拾取redirect_stdout

(注:行为与 相同redirect_stderr)。