英文:
defer log.SetOutput(os.Stdout) after log.SetOutput(ioutil.Discard)
问题
在go-nsq
库(https://github.com/bitly/go-nsq/blob/master/writer_test.go#L38)中,我发现了以下代码:
log.SetOutput(ioutil.Discard)
defer log.SetOutput(os.Stdout)
为什么作者在将日志丢弃后又延迟将其输出到标准输出(stdout)?
英文:
In go-nsq
library (https://github.com/bitly/go-nsq/blob/master/writer_test.go#L38), I found the following code:
log.SetOutput(ioutil.Discard)
defer log.SetOutput(os.Stdout)
Why does the author defer logging to stdout after discard the log?
答案1
得分: 2
log.SetOutput(ioutil.Discard)
语句更改了标准日志记录器的输出目标。defer log.SetOutput(os.Stdout)
语句试图在函数结束时将输出目标重置回初始值。然而,它应该将其重置回os.Stderr
。
var std = New(os.Stderr, "", LstdFlags)
英文:
The log.SetOutput(ioutil.Discard)
statement changes the standard logger output destination. The defer log.SetOutput(os.Stdout)
statement attempts to reset the output destination back to its initial value when the function ends. However, it should have reset it back to os.Stderr
.
var std = New(os.Stderr, "", LstdFlags)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论