gpt4 book ai didi

go - 如何将 zap 记录器与 go-kit 一起使用?

转载 作者:行者123 更新时间:2023-12-03 02:23:32 26 4
gpt4 key购买 nike

我想使用 go-kit logger lib 与 zap我希望它在这个函数中返回实例我将能够像下面这样使用 zap.logger:(使用 zap 功能)就像

logger.Info

logger.WithOptions

等等

我尝试使用以下方法返回 zap 界面,但它不起作用,方法不可用,知道我在这里缺少什么吗?

func NewZapLogger() zap.Logger  {

cfg := zap.Config{
Encoding: "json",
Level: zap.NewAtomicLevelAt(zapcore.DebugLevel),
OutputPaths: []string{"stderr"},
ErrorOutputPaths: []string{"stderr"},
EncoderConfig: zapcore.EncoderConfig{
MessageKey: "message",

LevelKey: "level",
EncodeLevel: zapcore.CapitalLevelEncoder,

TimeKey: "time",
EncodeTime: zapcore.ISO8601TimeEncoder,

CallerKey: "caller",
EncodeCaller: zapcore.FullCallerEncoder,
},
}
logger, _ := cfg.Build()

sugarLogger := logz.NewZapSugarLogger(logger, zap.InfoLevel)

return sugarLogger.

}

最佳答案

Go Kit 导出自己的日志记录接口(interface)。他们只提供Log方法。它被命名为 zapSugarLogger,它基本上是一个与 zap 的日志函数之一匹配的函数类型(InfowWarnw 等) )。

看起来无法从 zapSugarLogger 实例访问底层 zap 功能。

但是,您可以自己创建一个 zap 实例并照常使用它。

package main

import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)

func main() {

cfg := zap.Config{
Encoding: "json",
Level: zap.NewAtomicLevelAt(zapcore.DebugLevel),
OutputPaths: []string{"stderr"},
ErrorOutputPaths: []string{"stderr"},
EncoderConfig: zapcore.EncoderConfig{
MessageKey: "message",

LevelKey: "level",
EncodeLevel: zapcore.CapitalLevelEncoder,

TimeKey: "time",
EncodeTime: zapcore.ISO8601TimeEncoder,

CallerKey: "caller",
EncodeCaller: zapcore.FullCallerEncoder,
},
}
logger, _ := cfg.Build()

logger.Info("Hello")



}

关于go - 如何将 zap 记录器与 go-kit 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com