我想将go-kit logger库与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.
}
答案 0 :(得分:1)
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")
}