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

35 lines
1.1 KiB

package zlog
import (
"fmt"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
type CoreOption func(encoder zapcore.Encoder) zapcore.Core
// WithLogFile 文件输出
// 使用 lumberjack 进行日志轮转
func WithLogFile(level zapcore.Level, fileConfig func(*lumberjack.Logger)) CoreOption {
return func(encoder zapcore.Encoder) zapcore.Core {
fileLog := &lumberjack.Logger{
Filename: fmt.Sprintf("%s.log", level.String()), // level 日志文件
MaxSize: 10, // 日志文件大小(MB)
MaxBackups: 3, // 保留旧日志文件数量
MaxAge: 30, // 保留旧日志天数
}
if fileConfig != nil {
fileConfig(fileLog)
}
fileWriter := zapcore.AddSync(fileLog)
// 定义日志级别
levelPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
// return lvl >= level // level 及以上级别
return lvl == level // leve l级别
})
return zapcore.NewCore(encoder, fileWriter, levelPriority)
}
}