我应该将消息记录到stderr或stdout吗?

时间:2011-02-07 07:57:26

标签: logging stream error-logging

我正在编写一个程序,我想编写一个自定义日志记录工具(例如诊断,通知,警告,错误)。

我应该使用stdoutstderr流来执行此操作吗?它是各种解释器,用户可以要求它打印输出。

编辑:请停止向我推荐日志记录框架:(

2 个答案:

答案 0 :(得分:36)

常规输出(运行程序的实际结果)应该stdoutstderr上提到的内容(例如诊断,通知,警告,错误)。

如果没有“常规输出”,我会说你选择哪一个并不重要。您可能会认为日志记录是唯一的输出,因此应该转到stdout。或者你可以说它仍然是“特殊信息”,应该转到stderr

答案 1 :(得分:10)

你是否在stdout写了别的东西?如果答案是Yes那么有人就很难区分正常流量和用于从stdout重定向的文件中间的错误。

如果将stdout用作其他程序的输入怎么办?它能够解析这个调试信息吗?在这种情况下,最好只将严重错误写入stderr。如果您需要编写其他内容,可以考虑写入其他日志文件。