package logger
|
|
import (
|
"github.com/natefinch/lumberjack"
|
"go.uber.org/zap"
|
"go.uber.org/zap/zapcore"
|
"os"
|
"strings"
|
"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) {
|
logdir := "./logger/"
|
if index := strings.LastIndex(logPath, "/"); index != -1 {
|
logdir = logPath[0:index] + "/"
|
}
|
fi,err := os.Stat(logdir)
|
if !((err == nil || os.IsExist(err)) && fi.IsDir()) {
|
os.MkdirAll(logdir, os.ModePerm)
|
}
|
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...)
|
}
|