它应该是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变量,并设置其属性.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |