与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
似乎是合理的,以避免再次感到惊讶。这是个好习惯吗?我会想念什么吗?
答案 0 :(得分:1)
您可能不想将默认值更改为stdout。 这样做的原因是stderr旨在作为所有消息的输出,而这些消息仅仅是一些内部和/或调试程序信息,例如日志和错误,而不是程序结果的实际输出。
答案 1 :(得分:0)
计算机程序基本上将数据作为输入并创建数据作为输出。 在程序运行时,可以通过监视将其操作通知给用户,而无需更改其输出数据。为此,计算机程序传统上具有两个输出:一个标准输出数据,另一个用于监视(记录和错误):stderr。
当程序是可移植的时,这特别有用:例如,在视频像素之间不会出现错误消息,因为这会破坏数据。