hello.py:
import logging
logging.info("hello, I am a log")
wrapper.py:
import subprocess
from subprocess import PIPE
result = subprocess.run('python ./hello.py'.split(' '), stdout=PIPE, stderr=PIPE, universal_newlines=True)
print(f'returncode: {result.returncode}')
print(f'stdout: {result.stdout}')
print(f'stderr: {result.stderr}')
当我打电话给python wrapper.py
时,我希望看到此输出:
returncode: 0
stdout: INFO:root:hello, I am a log
stderr:
但是,我却得到了这个输出:
returncode: 0
stdout:
stderr:
并且,如果我将logging.info()
替换为logger.warning()
,则得到以下输出:
returncode: 0
stdout:
stderr: WARNING:root:hello, I am a log
但是,我到处都有一堆带有logging.info
的代码,我想将其提取到python子进程中。我该怎么办?
最后注:
hello.py
来调用import hello
,但在这种情况下,这不是一个选择。好吧,那么让潜在的读者了解一下。
将logging.getLogger().setLevel(logging.INFO)
添加到hello.py
。默认的日志记录级别是警告,因为用户蓝调指出。因此,当您使用logging.info()
时不会产生任何输出,这就是为什么您看不到它的原因。
[在https://docs.python.org/3/library/logging.html#logging.Logger.setLevel上查看更多内容