日志模式设置无效修复、增加输出目录设置
This commit is contained in:
parent
5ca21409cf
commit
7bd99bb163
|
@ -16,13 +16,19 @@ var (
|
||||||
prod bool
|
prod bool
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
logPath string
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
logPath = "./logs"
|
|
||||||
logTime = 7
|
logTime = 7
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
logger = newLogger()
|
logger = newLogger()
|
||||||
|
if prod && len(logPath) == 0 {
|
||||||
|
Warn("Logger", zap.String("Tip", "in production mode, if the log file output directory is not set, only the console will be output"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newLogger() *zap.Logger {
|
func newLogger() *zap.Logger {
|
||||||
|
@ -47,7 +53,7 @@ func newLogger() *zap.Logger {
|
||||||
debugLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
debugLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
||||||
return lvl <= zapcore.FatalLevel
|
return lvl <= zapcore.FatalLevel
|
||||||
})
|
})
|
||||||
warnLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
errorLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
||||||
return lvl >= zapcore.ErrorLevel
|
return lvl >= zapcore.ErrorLevel
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -57,24 +63,28 @@ func newLogger() *zap.Logger {
|
||||||
cores = zapcore.NewTee(
|
cores = zapcore.NewTee(
|
||||||
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), debugLevel),
|
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), debugLevel),
|
||||||
)
|
)
|
||||||
|
} else {
|
||||||
|
if len(logPath) == 0 {
|
||||||
|
cores = zapcore.NewTee(
|
||||||
|
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), debugLevel),
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
infoWriter := getWriter(fmt.Sprintf("%s/info.log", logPath), logTime)
|
infoWriter := getWriter(fmt.Sprintf("%s/info.log", logPath), logTime)
|
||||||
warnWriter := getWriter(fmt.Sprintf("%s/error.log", logPath), logTime)
|
errorWriter := getWriter(fmt.Sprintf("%s/error.log", logPath), logTime)
|
||||||
cores = zapcore.NewTee(
|
cores = zapcore.NewTee(
|
||||||
zapcore.NewCore(encoder, zapcore.AddSync(infoWriter), infoLevel),
|
zapcore.NewCore(encoder, zapcore.AddSync(infoWriter), infoLevel),
|
||||||
zapcore.NewCore(encoder, zapcore.AddSync(warnWriter), warnLevel),
|
zapcore.NewCore(encoder, zapcore.AddSync(errorWriter), errorLevel),
|
||||||
|
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), errorLevel),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return zap.New(cores, zap.AddCaller(), zap.AddCallerSkip(1))
|
return zap.New(cores, zap.AddCaller(), zap.AddCallerSkip(1))
|
||||||
}
|
}
|
||||||
|
|
||||||
func getWriter(filename string, times int32) io.Writer {
|
func getWriter(filename string, times int32) io.Writer {
|
||||||
// 生成rotatelogs的Logger 实际生成的文件名 demo.log.YYmmddHH
|
|
||||||
// demo.log是指向最新日志的链接
|
|
||||||
// //保存7天内的日志,每天分割一次日志
|
|
||||||
hook, err := rotatelogs.New(
|
hook, err := rotatelogs.New(
|
||||||
filename+".%Y%m%d", // 没有使用go风格反人类的format格式
|
filename+".%Y%m%d",
|
||||||
rotatelogs.WithLinkName(filename),
|
rotatelogs.WithLinkName(filename),
|
||||||
rotatelogs.WithMaxAge(time.Hour*24*7),
|
rotatelogs.WithMaxAge(time.Hour*24*7),
|
||||||
rotatelogs.WithRotationTime(time.Hour*time.Duration(times)),
|
rotatelogs.WithRotationTime(time.Hour*time.Duration(times)),
|
||||||
|
@ -116,4 +126,16 @@ func ErrorWithStack(msg, stack string, fields ...zap.Field) {
|
||||||
|
|
||||||
func SetProd() {
|
func SetProd() {
|
||||||
prod = true
|
prod = true
|
||||||
|
if logger != nil {
|
||||||
|
_ = logger.Sync()
|
||||||
|
logger = newLogger()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetLogDir(dir string) {
|
||||||
|
logPath = dir
|
||||||
|
if logger != nil {
|
||||||
|
_ = logger.Sync()
|
||||||
|
logger = newLogger()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue