You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.9 KiB
Go

2 years ago
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()
}
func getEncoderTest() zapcore.Encoder {
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
return zapcore.NewConsoleEncoder(encoderConfig)
}
func getLogWriterTest(filePath string) zapcore.WriteSyncer {
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
}