在log.SetOutput(ioutil.Discard)之后延迟log.SetOutput(os.Stdout)

时间:2014-03-02 18:54:35

标签: logging go nsq go-nsq

go-nsq库(https://github.com/bitly/go-nsq/blob/master/writer_test.go#L38)中,我找到了以下代码:

log.SetOutput(ioutil.Discard)
defer log.SetOutput(os.Stdout)

为什么作者在丢弃日志后会将日志记录推迟到stdout?

1 个答案:

答案 0 :(得分:1)

log.SetOutput(ioutil.Discard)语句更改标准记录器输出目标。当函数结束时,defer log.SetOutput(os.Stdout)语句尝试将输出目标重置为其初始值。但是,它应该将其重置为os.Stderr

src/pkg/log/log.go

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