|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
日志记录
Go SDK几乎开箱即用地与https://github.com/francoispqt/onelog[onelog]项目集成。
该项目选择了这个库作为:
-
它可以与WebAssembly二进制文件一起使用。 其他流行的日志解决方案无法编译为WebAssembly目标。
-
它提供了https://github.com/francoispqt/onelog#benchmarks[良好的性能]。
-
它支持结构化日志记录。
初始化日志记录器
您需要初始化一个日志记录器结构。
通过在全局变量中执行此初始化,您可以从两个主要策略入口点记录:validate`和`validate_settings。
在主包中,`main.go`有日志记录器的初始化:
var (
logWriter = kubewarden.KubewardenLogWriter{}
logger = onelog.New(
&logWriter,
onelog.ALL, // shortcut for onelog.DEBUG|onelog.INFO|onelog.WARN|onelog.ERROR|onelog.FATAL
)
)
使用日志记录器
现在,您可以使用`logger`对象在需要的地方进行日志记录:
func validate(payload []byte) ([]byte, error) {
// ...
logger.Info("validating request")
// ...
}
您可以添加结构化日志记录:
func validate(payload []byte) ([]byte, error) {
// ...
logger.WarnWithFields("logging something important", func(e onelog.Entry) {
e.String("one_field", "a value")
e.String("another_field", "another value")
})
// ...
}
您可以参考https://pkg.go.dev/github.com/francoispqt/onelog?utm_source=godoc[`onelog`文档]以获取更多信息。
策略日志记录发送到策略评估器(例如,kwctl`或`policy-server),它们代表策略进行日志记录。
它们使用与其他组件互操作的机制,这些组件支持分布式追踪,例如https://www.jaegertracing.io/[Jaeger]。