Skip to content

zap

zap有sugar和logger两种写法。sugar支持printf风格但性能相对较低。这里以logger为例。

快速入门

logger, err := zap.NewProduction()
if err != nil {
 log.Fatalf("Error creating logger: %v", err)
}
defer logger.Sync() 

这样就创建了一个最基础的logger,把日志写入到标准输出。语法如下: func (log *Logger) MethodXXX(msg string, fields ...Field) MethodXXX是方法名,即Info/Error/Debug/Panic等,msg是日志内容,fields是一些额外的信息,比如时间戳、日志级别、错误信息等。每个zapcore.Field其实就是一组键值对参数。

高级配置

可以通过zap.New(core)方法自定义配置,需要先创建一个core。

core := zapcore.NewCore(encoder, writer, level)
logger := zap.New(core)

encoder:编码器(如何写入日志) writer:指定日志将写入的地方 level:指定日志级别

JSON Encoder:zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()) Console Encoder:zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig())

写入文件:zapcore.AddSync(file) 多重写入:zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(file))

level使用默认值就行 zapcore.InfoLevel