我正在尝试使用zap 记录器包创建一个带有文件、控制台和 Kafka 接收器的核心。我有一些非常特定INFO级别的日志,我想将它们发送到 Kafka 主题以供下游消费者处理。然而,在当前的实现中,我获得了INFOKafka 主题中的所有级别日志,甚至是我不想要的日志。
有没有一种方法可以使用通用的 zap 记录器对象来防止同一级别的不需要的日志不进入任何一个特定的接收器?
下面是我用来创建单个记录器对象的函数。
func newZapLogger(config Configuration) (Logger, error) {
var writer zapcore.WriteSyncer
cores := []zapcore.Core{}
if config.EnableFile {
getLogLevel(config.FileLevel)
if config.LogConfig == true {
writer = zapcore.Lock(zapcore.AddSync(&lj.Logger{
Filename: config.FileLocation,
MaxSize: config.LogMaxSize,
Compress: config.LogCompression,
MaxAge: config.LogMaxAge,
}))
} else {
writer = zapcore.Lock(zapcore.AddSync(&lj.Logger{
Filename: config.FileLocation,
}))
}
cores = append(cores, zapcore.NewCore(getEncoder(config.FileJSONFormat, config.IsColour), writer, atomLevel))
}
if config.EnableConsole {
getLogLevel(config.ConsoleLevel)
switch config.Stream {
case 1:
writer = zapcore.Lock(os.Stdout) …Run Code Online (Sandbox Code Playgroud)