2014-03-02 21 views

回答

1

log.SetOutput(ioutil.Discard)語句更改標準記錄器輸出目標。當函數結束時,defer log.SetOutput(os.Stdout)語句會嘗試將輸出目標復位回其初始值。但是,它應該將其重置爲os.Stderr

src/pkg/log/log.go

var std = New(os.Stderr, "", LstdFlags) 
+0

謝謝,@peterSO!爲什麼作者希望將日誌轉儲到'/ dev/null'並稍後重新設置?在單元測試中記錄錯誤是否有利? – Mingyu

+0

@Myuyu:測試只關心沒有錯誤,即err == nil。記錄的信息和錯誤消息的文本被認爲是不重要或混亂的。運行測試而不丟棄記錄的消息。放棄它們是否合理? – peterSO