【发布时间】:2019-11-21 17:26:16
【问题描述】:
与Does Python logging write to stdout or stderr by default? 相关,但我想知道为什么它默认为stderr 而WHAT 是默认值。
对我来说,为什么stderr 是默认值并不是很明显。我注意到当我运行python script.py | tee out.log 时出现问题并最终得到空日志文件。现在我知道它可以通过python script.py 2>&1 | tee out.log 或使用stream 参数来解决:
logging.basicConfig(stream=sys.stdout)
在那次事件之后,我将每个脚本中的默认stream 更改为stdout 似乎是合理的,以避免再次感到惊讶。这是一个好习惯吗?我会错过什么吗?
【问题讨论】:
-
如果我冒险猜测,那是因为日志记录不被认为是程序的输出,而是有点像程序正在执行的“运行评论”。就像导演的评论不会合并到 DVD 上的默认音频流中一样,日志记录也与标准输出分开,这样它就不会干扰节目的输出;如果您想将某些内容打印到标准输出,请打印它,不要记录它。但是,这类问题只能由最初实现它的人来权威地回答,所以它不太适合 Stack Overflow。
-
@Amadan 我发现您的评论信息量最大,如果这是一个实际的答案,我会接受它。
标签: python logging default stderr