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



与 Python 日志记录默认写入标准输出还是标准输出相关? 但我想知道为什么它默认为stderr而不是默认值是什么

对我来说,为什么stderr是默认值并不明显。我注意到运行python script.py | tee out.log时出现问题,最终日志文件为空。现在我知道它可以通过python script.py 2>&1 | tee out.log或使用stream参数来解决:

logging.basicConfig(stream=sys.stdout)

在那次事件之后,在我看来,将默认stream更改为每个脚本中的stdout似乎是合理的,以避免再次感到惊讶。这是一种好的做法吗?我会错过什么吗?

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

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

当您的程序是可管道的时,这尤其有用:例如,视频像素之间不会有错误消息,因为它会破坏您的数据。

相关内容

  • 没有找到相关文章

最新更新