我有一個程序我正在寫我想寫一個自定義日誌記錄工具(例如診斷,通知,警告,錯誤)。我應該將消息記錄到stderr或stdout嗎?
我應該使用stdout
還是stderr
流來做到這一點?它是一種解釋器,用戶可以要求它打印輸出。
編輯:請不要推薦我的日誌框架:(
我有一個程序我正在寫我想寫一個自定義日誌記錄工具(例如診斷,通知,警告,錯誤)。我應該將消息記錄到stderr或stdout嗎?
我應該使用stdout
還是stderr
流來做到這一點?它是一種解釋器,用戶可以要求它打印輸出。
編輯:請不要推薦我的日誌框架:(
常規輸出(運行程序的實際結果)應該去stdout
,像你提到的(如診斷,通知,警告,錯誤) on stderr
。
如果沒有「常規輸出」,我會說你選擇哪一個並不重要,你可能會說記錄是唯一的輸出,所以應該去stdout
。你可以爭辯說,它仍然是「特殊的信息」,應該去stderr
。
你還寫點別的東西給stdout
?如果答案是Yes
那麼對於某人來說,很難區分用於從stdout
重定向的文件中間的正常流量和錯誤。
如果stdout
將用作另一個程序的輸入,該怎麼辦?它能夠解析這個調試信息嗎?在這種情況下,最好只寫出stderr
的嚴重錯誤。如果您需要編寫其他內容,您可能會考慮寫入其他日誌文件。
如果您使用像java這樣的語言,爲什麼不使用着名的日誌框架之一,比如log4j? – flash 2011-02-07 08:00:36
我真的建議你在花時間實現日誌記錄之前先看看一些日誌庫。如果你讓我們知道你在寫什麼語言,我相信會有很多建議。 – 2011-02-07 08:01:07