配置选项
Zap 提供灵活的配置选项。
Config 结构
生产配置
go
config := zap.NewProductionConfig()
config.Level = zap.NewAtomicLevelAt(zap.InfoLevel)
config.EncoderConfig.TimeKey = "timestamp"
config.EncoderConfig.EncodeTime = zap.ISO8601TimeEncoder
logger, _ := config.Build()开发配置
go
config := zap.NewDevelopmentConfig()
config.EncoderConfig.EncodeLevel = zap.CapitalColorLevelEncoder
logger, _ := config.Build()编码器配置
JSON 编码器
go
encoderConfig := zapcore.EncoderConfig{
TimeKey: "ts",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
}
encoder := zapcore.NewJSONEncoder(encoderConfig)Console 编码器
go
encoderConfig := zapcore.EncoderConfig{
TimeKey: "T",
LevelKey: "L",
NameKey: "N",
CallerKey: "C",
MessageKey: "M",
StacktraceKey: "S",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.CapitalColorLevelEncoder,
EncodeTime: zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05"),
EncodeCaller: zapcore.ShortCallerEncoder,
}
encoder := zapcore.NewConsoleEncoder(encoderConfig)输出配置
文件输出
go
file, _ := os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
core := zapcore.NewCore(
zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
zapcore.AddSync(file),
zap.InfoLevel,
)
logger := zap.New(core)多输出
go
core := zapcore.NewTee(
zapcore.NewCore(zapcore.NewJSONEncoder(encoderConfig), os.Stdout, zap.InfoLevel),
zapcore.NewCore(zapcore.NewConsoleEncoder(encoderConfig), file, zap.WarnLevel),
)
logger := zap.New(core)