您可以考虑的日志记录模块之一是 klog 。它支持“V”日志记录,可以灵活地在特定级别进行日志记录
klog 是 glog 的一个分支,克服了以下缺点
glog 提出了很多“陷阱”,并在容器化环境中引入了挑战,所有这些都没有得到很好的记录。
glog 没有提供测试日志的简单方法,这降低了使用它的软件的稳定性
glog 是基于 C++ 的,而 klog 是纯 golang 实现
示例实施
package main
import (
"flag"
"k8s.io/klog"
)
type myError struct {
str string
}
func (e myError) Error() string {
return e.str
}
func main() {
klog.InitFlags(nil)
flag.Set("v", "1")
flag.Parse()
klog.Info("hello", "val1", 1, "val2", map[string]int{"k": 1})
klog.V(3).Info("nice to meet you")
klog.Error(nil, "uh oh", "trouble", true, "reasons", []float64{0.1, 0.11, 3.14})
klog.Error(myError{"an error occurred"}, "goodbye", "code", -1)
klog.Flush()
}