如何在 go-kit 中使用 zap logger?
How to use zap logger with go-kit?
我想使用 go-kit logger lib with zap 并且我希望在这个函数中将它用于 return 实例
zap.logger,我将能够像下面这样使用它:(使用 zap 功能)像
logger.Info
或
logger.WithOptions
等等
我尝试使用以下 return 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 导出自己的日志接口。他们只提供 Log
方法。它被命名为 zapSugarLogger
,它基本上是一个与 zap
的日志函数(Infow
、Warnw
等)之一匹配的函数类型。
看起来无法从 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-kit logger lib with zap 并且我希望在这个函数中将它用于 return 实例 zap.logger,我将能够像下面这样使用它:(使用 zap 功能)像
logger.Info
或
logger.WithOptions
等等
我尝试使用以下 return 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 导出自己的日志接口。他们只提供 Log
方法。它被命名为 zapSugarLogger
,它基本上是一个与 zap
的日志函数(Infow
、Warnw
等)之一匹配的函数类型。
看起来无法从 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")
}