package logger import ( "github.com/natefinch/lumberjack" "go.uber.org/zap" "go.uber.org/zap/zapcore" "time" ) var logger *zap.SugaredLogger const ( DebugLevel = iota -1 InfoLevel WarnLevel ErrorLevel DPanicLevel PanicLevel FatalLevel ) func InitLogger(logPath string, logLevel int,maxSize int, maxBackups int, maxAge int) { hook := lumberjack.Logger { Filename: logPath, //日志文件的位置 MaxSize: maxSize, //在进行切割之前,日志文件的最大大小(以MB为单位) MaxBackups: maxBackups, //保留旧文件的最大个数 MaxAge: maxAge, //保留旧文件的最大天数 Compress: true, //是否压缩 LocalTime: true, } w := zapcore.AddSync(&hook) var level zapcore.Level switch logLevel { case DebugLevel: level = zap.DebugLevel case InfoLevel: level = zap.InfoLevel case WarnLevel: level = zap.WarnLevel case ErrorLevel: level = zap.ErrorLevel case DPanicLevel: level = zap.DPanicLevel case PanicLevel: level = zap.PanicLevel case FatalLevel: level = zap.FatalLevel default: level = zap.InfoLevel } encoderConfig := zap.NewProductionEncoderConfig() encoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder encoderConfig.CallerKey = "file" encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder encoderConfig.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { enc.AppendString(t.Format("2006-01-02 15:04:05")) } core := zapcore.NewCore( zapcore.NewConsoleEncoder(encoderConfig), w, level, ) log := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1)) logger = log.Sugar() logger.Info("init logger success") } func Debug(v ...interface{}) { logger.Debug(v...) } func Debugf(template string, v ...interface{}) { logger.Debugf(template, v...) } func Info(v ...interface{}) { logger.Info(v) } func Infof(template string, v ...interface{}) { logger.Infof(template, v...) } func Warn(v ...interface{}) { logger.Warn(v...) } func Warnf(template string, v ...interface{}) { logger.Warnf(template, v...) } func Error(v ...interface{}) { logger.Error(v...) } func Errorf(template string, v ...interface{}) { logger.Errorf(template, v...) }