74

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

我应该使用stdout还是stderr流来做到这一点?它是一种解释器,用户可以要求它打印输出。

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

4

2 回答 2

64

常规输出(运行程序的实际结果)应该继续stdout,就像你提到的(例如诊断、通知、警告、错误)一样stderr

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

于 2011-02-07T08:00:19.503 回答
14

你写别的东西stdout吗?如果答案是Yes这样,那么某人将很难区分正常流程和用于重定向的文件中间的错误stdout

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

于 2011-02-07T08:06:35.873 回答