在Go中执行日志记录的惯用方法是什么?
答案 0 :(得分:11)
创建一个声明全局变量 logger 的文件。然后,使用Go的惯用init()函数在启动时初始化变量。
<强> logger.go 强>:
package xxx
import (
"log"
"os"
)
var logger *log.Logger
func init() {
logger = log.New(os.Stderr, "xxx: ", log.Ldate | log.Ltime | log.Lshortfile)
}
<强> example.go 强>:
func test() {
logger.Println("Logged")
}
此方法提供的好处是,您可以使用可以从单个文件配置的单个记录器实现。
编辑: ThomasKappler指出,如果您只使用单个全局记录器,则可以使用日志包的内置记录器并使用SetFlags进行配置。唯一的区别是您必须更明确并导入日志包。
答案 1 :(得分:0)
我刚刚写了一个库,允许库使用库中的应用程序记录器。
该库旨在为所有最常用的记录器(zap,logrus,golog,内置go logger)提供包装。最重要的是,它是图书馆用户的选择。如果不想,他们不必显式配置记录器库。
请参阅: