gongshangguo
2022-02-25 5cf6309c132fdf1e110fb23f419e6971c63f533c
logger.go
@@ -13,16 +13,19 @@
   logger *zap.SugaredLogger
}
var (
   blog *BLog
   atomicLevel = zap.NewAtomicLevelAt(zapcore.DebugLevel)
)
func (l *BLog) Write(buf []byte) (n int, err error) {
   l.logger.Debug(string(buf))
   l.logger.Debug(strings.Replace(string(buf),"\n","", -1))
   return len(buf),nil
}
func GetLogFile() *BLog {
   return  blog
}
var blog *BLog
const (
   DebugLevel = iota -1
@@ -33,17 +36,39 @@
   PanicLevel
   FatalLevel
)
func InitLogger(logPath string, logLevel int,maxSize int, maxBackups int, maxAge int) {
func InitLogger(logPath string, logLevel int,maxSize int, maxBackups int, maxAge int) *zap.SugaredLogger {
   logdir := "./logger/"
   logName := ""
   if index := strings.LastIndex(logPath, "/"); index != -1 {
      logdir = logPath[0:index] + "/"
      if index < len(logPath)-1 {
         logName = logPath[index+1:]
      }
   } else {
      logName = logPath
   }
   if logName == "" {
      logName = "log.log"
   }
   fi,err := os.Stat(logdir)
   if !((err == nil || os.IsExist(err)) && fi.IsDir()) {
      os.MkdirAll(logdir, os.ModePerm)
   }
   if logLevel < DebugLevel || logLevel > FatalLevel {
      logLevel = DebugLevel
   }
   if maxSize <=0 {
      maxSize = 128
   }
   if maxBackups <=0 {
      maxBackups = 30
   }
   if maxAge <= 0 {
      maxAge = 15
   }
   hook := lumberjack.Logger {
      Filename: logPath,   //日志文件的位置
      Filename: logdir+logName,   //日志文件的位置
      MaxSize: maxSize,       //在进行切割之前,日志文件的最大大小(以MB为单位)
      MaxBackups: maxBackups,     //保留旧文件的最大个数
      MaxAge: maxAge,           //保留旧文件的最大天数
@@ -52,6 +77,32 @@
   }
   w := zapcore.AddSync(&hook)
   atomicLevel = zap.NewAtomicLevelAt(getZapLevel(logLevel))
   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,
      atomicLevel,
   )
   log := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
   blog = &BLog{
      logger: log.Sugar(),
   }
   blog.logger.Info("init logger success")
   return blog.logger
}
func getZapLevel(logLevel int) zapcore.Level {
   var level zapcore.Level
   switch logLevel {
   case DebugLevel:
@@ -71,24 +122,12 @@
   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"))
   }
   return level
}
   core := zapcore.NewCore(
      zapcore.NewConsoleEncoder(encoderConfig),
      w,
      level,
   )
   log := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
   blog = &BLog{
      logger: log.Sugar(),
   }
   blog.logger.Info("init logger success")
func SetLevel(lv int) error {
   atomicLevel.SetLevel(getZapLevel(lv))
   return nil
}
func Debug(v ...interface{}) {
@@ -121,4 +160,12 @@
func Errorf(template string, v ...interface{}) {
   blog.logger.Errorf(template, v...)
}
}
func Fatal(v ...interface{}) {
   blog.logger.Fatal(v...)
}
func Fatalf(template string, v ...interface{}) {
   blog.logger.Fatalf(template, v...)
}