2022-09-21 06:30:52 +00:00
|
|
|
|
package logger
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"io"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
rotatelogs "github.com/lestrrat/go-file-rotatelogs"
|
|
|
|
|
"go.uber.org/zap"
|
|
|
|
|
"go.uber.org/zap/zapcore"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var SugarLogger *zap.SugaredLogger
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
fmt.Println("begin main")
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InitLogger() {
|
|
|
|
|
encoder := getEncoder()
|
|
|
|
|
|
|
|
|
|
//两个interface,判断日志等级
|
|
|
|
|
//warnlevel以下归到info日志
|
|
|
|
|
infoLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
|
|
|
|
return lvl < zapcore.WarnLevel
|
|
|
|
|
})
|
|
|
|
|
//warnlevel及以上归到warn日志
|
|
|
|
|
warnLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
|
|
|
|
return lvl >= zapcore.WarnLevel
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
infoWriter := getLogWriter("/", 1, 1, 1)
|
|
|
|
|
warnWriter := getLogWriter("/", 1, 1, 1)
|
|
|
|
|
|
|
|
|
|
//创建zap.Core,for logger
|
|
|
|
|
core := zapcore.NewTee(
|
|
|
|
|
zapcore.NewCore(encoder, infoWriter, infoLevel),
|
|
|
|
|
zapcore.NewCore(encoder, warnWriter, warnLevel),
|
|
|
|
|
)
|
|
|
|
|
//生成Logger
|
|
|
|
|
logger := zap.New(core, zap.AddCaller())
|
|
|
|
|
SugarLogger = logger.Sugar()
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-22 06:23:56 +00:00
|
|
|
|
func getEncoderartShow() zapcore.Encoder {
|
2022-09-21 06:30:52 +00:00
|
|
|
|
encoderConfig := zap.NewProductionEncoderConfig()
|
|
|
|
|
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
|
|
|
|
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
|
|
|
return zapcore.NewConsoleEncoder(encoderConfig)
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-22 06:23:56 +00:00
|
|
|
|
func getLogWriterartShow(filePath string) zapcore.WriteSyncer {
|
2022-09-21 06:30:52 +00:00
|
|
|
|
warnIoWriter := getWriter(filePath)
|
|
|
|
|
return zapcore.AddSync(warnIoWriter)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//日志文件切割
|
|
|
|
|
func getWriter(filename string) io.Writer {
|
|
|
|
|
// 保存日志30天,每24小时分割一次日志
|
|
|
|
|
/*
|
|
|
|
|
hook, err := rotatelogs.New(
|
|
|
|
|
filename+"_%Y%m%d.log",
|
|
|
|
|
rotatelogs.WithLinkName(filename),
|
|
|
|
|
rotatelogs.WithMaxAge(time.Hour*24*30),
|
|
|
|
|
rotatelogs.WithRotationTime(time.Hour*24),
|
|
|
|
|
)
|
|
|
|
|
*/
|
|
|
|
|
//保存日志30天,每1分钟分割一次日志
|
|
|
|
|
hook, err := rotatelogs.New(
|
|
|
|
|
filename+"_%Y%m%d%H%M.log",
|
|
|
|
|
rotatelogs.WithLinkName(filename),
|
|
|
|
|
rotatelogs.WithMaxAge(time.Hour*24*30),
|
|
|
|
|
rotatelogs.WithRotationTime(time.Minute*1),
|
|
|
|
|
)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
return hook
|
|
|
|
|
}
|