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

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

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

编辑:请停止build议我日志框架:(

正常输出(运行程序的实际结果)应该在stdout ,像你提到的东西(例如,诊断,通知,警告,错误)在stderr

如果没有“经常性的输出”,我会说你select哪一个并不重要。 你可以争辩说,日志是唯一的输出,所以应该去stdout 。 或者你可以争辩说,它仍然是“特殊的信息”,应该走向stderr

你写什么东西stdout ? 如果答案是Yes那么就很难区分正常的stream程和用于从stdoutredirect的文件中间的错误。

如果stdout将被用作另一个程序的input呢? 它能parsing这个debugging信息吗? 在这种情况下,只给stderr写严重错误是很好的做法。 如果您需要编写其他东西,可以考虑写入其他日志文件。