在哪里记录错误?

The*_*hat 5 logging go

我正在使用日志包,我想知道日志数据的默认目的地是什么.我找不到任何地方.我需要一个io编写器,并在每个日志之后专门调用它或它应该如何工作?

Von*_*onC 5

它应该是stdErr,如第58行log.go:

var std = New(os.Stderr, "", LstdFlags)
Run Code Online (Sandbox Code Playgroud)

所以包方法Fatal()默认使用std:

// Fatal is equivalent to Print() followed by a call to os.Exit(1).
func Fatal(v ...interface{}) {
    std.Output(2, fmt.Sprint(v...))
    os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)

博客文章" How to write Go package coders will love "(由Baron Schwartz 撰写)引用了这种技巧:

我在标准Go库中找到的模式之一就是我所说的包和对象.(这是我自己的名字;也许我正在重新发明或命名另一个名字已经知道的东西.)你可以在几个包中看到这个成语.它使这些包使用起来很愉快.

成语的本质是你像往常一样用方法设计一个类型,然后你也在包级别放置匹配的函数.这些函数只是委托给在init()函数中创建的私有包级变量类型的默认实例.

例如,要查看默认日志记录功能,您只需导入log包然后编写类似的内容即可log.Print().它超级简洁,方便,而且做得对.
想要自定义吗?创建自己的log.Logger变量,并设置其属性.