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
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) |
|
} |
|
}
|
|
|