package util import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" ) type DunionLogger interface { Infof(template string, args ...interface{}) Errorf(template string, args ...interface{}) } // var unionLogger *zap.SugaredLogger var unionLogger DunionLogger func SetLogger(logger DunionLogger) { unionLogger = logger } func InitLogger(logPath string) { writeSyncer := getLogWriter(logPath) encoder := getEncoder() core := zapcore.NewCore(encoder, writeSyncer, zapcore.InfoLevel) logger := zap.New(core, zap.AddCaller()) unionLogger = logger.Sugar() } func getEncoder() zapcore.Encoder { encoderConfig := zap.NewProductionEncoderConfig() encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder return zapcore.NewConsoleEncoder(encoderConfig) } func getLogWriter(logPath string) zapcore.WriteSyncer { lumberJackLogger := &lumberjack.Logger{ Filename: logPath, MaxSize: 500, MaxBackups: 5, MaxAge: 30, Compress: false, } return zapcore.AddSync(lumberJackLogger) }