package logger import ( "github.com/fonchain_enterprise/fonchain-main/pkg/config" "strconv" "github.com/natefinch/lumberjack" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) // ZapInit 初始化lg func ZapInit() *zap.Logger { var err error maxSize, _ := strconv.Atoi(config.MaxSize) maxAge, _ := strconv.Atoi(config.MaxAge) maxBackups, _ := strconv.Atoi(config.MaxAge) writeSyncer := getLogWriter(config.Filename, maxSize, maxBackups, maxAge) encoder := getEncoder() var l = new(zapcore.Level) err = l.UnmarshalText([]byte(config.Level)) if err != nil { return nil } var core zapcore.Core core = zapcore.NewCore(encoder, writeSyncer, l) lg := zap.New(core, zap.AddCaller()) zap.ReplaceGlobals(lg) return lg } func getEncoder() zapcore.Encoder { encoderConfig := zap.NewProductionEncoderConfig() encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder encoderConfig.TimeKey = "time" encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder encoderConfig.EncodeDuration = zapcore.SecondsDurationEncoder encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder return zapcore.NewJSONEncoder(encoderConfig) } func getLogWriter(filename string, maxSize, maxBackup, maxAge int) zapcore.WriteSyncer { lumberJackLogger := &lumberjack.Logger{ Filename: filename, MaxSize: maxSize, MaxBackups: maxBackup, MaxAge: maxAge, } return zapcore.AddSync(lumberJackLogger) }