2011-02-07 58 views
38

我有一个程序我正在写我想写一个自定义日志记录工具(例如诊断,通知,警告,错误)。我应该将消息记录到stderr或stdout吗?

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

编辑:请不要推荐我的日志框架:(

+0

如果您使用像java这样的语言,为什么不使用着名的日志框架之一,比如log4j? – flash 2011-02-07 08:00:36

+0

我真的建议你在花时间实现日志记录之前先看看一些日志库。如果你让我们知道你在写什么语言,我相信会有很多建议。 – 2011-02-07 08:01:07

回答

30

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

如果没有“常规输出”,我会说你选择哪一个并不重要,你可能会说记录是唯一的输出,所以应该去stdout。你可以争辩说,它仍然是“特殊的信息”,应该去stderr

8

你还写点别的东西给stdout?如果答案是Yes那么对于某人来说,很难区分用于从stdout重定向的文件中间的正常流量和错误。

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

相关问题