2011-02-07 55 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的嚴重錯誤。如果您需要編寫其他內容,您可能會考慮寫入其他日誌文件。

相關問題