w := zapcore.AddSync(&lumberjack.Logger{
Filename: "app.log",
MaxSize: 1, // megabytes
MaxBackups: 30,
MaxAge: 30, // days
})
c := zapcore.EncoderConfig{
MessageKey: "msg",
LevelKey: "level",
TimeKey: "time",
NameKey: "logger",
CallerKey: "file",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
EncodeName: zapcore.FullNameEncoder,
}
core := zapcore.NewCore(
zapcore.NewJSONEncoder(c),
zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), w),
zap.InfoLevel,
)
logger := zap.New(core, zap.AddCaller(), zap.Development())
logger.Sugar()