如何禁用或重定向使用 Go 原生 zk 包的第三方库打印的控制台日志?

问题描述 投票:0回答:1

我正在使用 Go 中的 Cobra 库构建 CLI。根据我的要求,我需要使用 zk 包,它是 Go 的 Native ZooKeeper 客户端。问题是来自该第三方的日志正在控制台上打印。我只想打印我自己的 cobra 应用程序(使用 fmt 包)的日志。我不想显示 zk 包中的日志。

想知道可以使用哪些方法来防止显示这些日志。

go glog go-cobra
1个回答
0
投票

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()
,但你可以做任何你想做的事情(忽略它,将其写入其他内容,解析它,无论你需要什么)。

© www.soinside.com 2019 - 2024. All rights reserved.