lang - Custom Zap Log



    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()