2014-03-02 75 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