为什么默认情况下Python日志记录写入stderr?

时间:2019-11-21 09:16:17

标签: python logging default stderr

Does Python logging write to stdout or stderr by default?相关,但是我想知道为什么,它默认为stderr,而不是什么

对我来说,stderr是默认值的原因并不清楚。我注意到当我运行python script.py | tee out.log并以空的日志文件结尾时出现了问题。现在我知道可以通过python script.py 2>&1 | tee out.log或使用stream参数来解决它:

logging.basicConfig(stream=sys.stdout)

在那之后,我认为在每个脚本中将默认的stream更改为stdout似乎是合理的,以避免再次感到惊讶。这是个好习惯吗?我会想念什么吗?

2 个答案:

答案 0 :(得分:1)

您可能不想将默认值更改为stdout。 这样做的原因是stderr旨在作为所有消息的输出,而这些消息仅仅是一些内部和/或调试程序信息,例如日志和错误,而不是程序结果的实际输出。

答案 1 :(得分:0)

计算机程序基本上将数据作为输入并创建数据作为输出。 在程序运行时,可以通过监视将其操作通知给用户,而无需更改其输出数据。为此,计算机程序传统上具有两个输出:一个标准输出数据,另一个用于监视(记录和错误):stderr。

当程序是可移植的时,这特别有用:例如,在视频像素之间不会出现错误消息,因为这会破坏数据。