我正在使用 Go 中的 Cobra 库构建 CLI。根据我的要求,我需要使用 zk 包,它是 Go 的 Native ZooKeeper 客户端。问题是来自该第三方的日志正在控制台上打印。我只想打印我自己的 cobra 应用程序(使用 fmt 包)的日志。我不想显示 zk 包中的日志。
想知道可以使用哪些方法来防止显示这些日志。
zk
包允许您传递客户记录器作为连接选项,如下所示:
type yourOwnLogger struct {}
func (yourOwnLogger) Printf(string, ...interface{}) {
// Do what you want with the log message here
}
func main() {
zkc := zk.Connect([]string{"127.0.0.1"}, time.Second, zk.WithLogger(yourOwnLogger{}))
}
记录器需要实现
zk.Logger
,这是一个需要一个函数的接口:Printf(string, ...interface{})
。
他们的默认设置只是将日志转发到
log.Printf()
,但你可以做任何你想做的事情(忽略它,将其写入其他内容,解析它,无论你需要什么)。