1、自定义配置项及引入第三方库lumberjack
实现日志归档功能
项目根目录下,新建log
目录,新建log.go
和constant.go
,配置如下:
1.1 log.go
package log
import (
"github.com/natefinch/lumberjack"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
)
// 设置日志级别、输出格式和日志文件的路径
func SetLogs(logLevel zapcore.Level, logFormat, fileName string) {
encoderConfig := zapcore.EncoderConfig{
TimeKey: TIME_KEY,
LevelKey: LEVLE_KEY,
NameKey: NAME_KEY,
CallerKey: CALLER_KEY,
MessageKey: MESSAGE_KEY,
StacktraceKey: STACKTRACE_KEY,
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.CapitalLevelEncoder, // 大写编码器
EncodeTime: zapcore.ISO8601TimeEncoder, // ISO8601 UTC 时间格式
EncodeDuration: zapcore.SecondsDurationEncoder, //
EncodeCaller: zapcore.ShortCallerEncoder, // 短路径编码器(相对路径+行号)
EncodeName: zapcore.FullNameEncoder,
}
// 设置日志输出格式
var encoder zapcore.Encoder
switch logFormat {
case LOGFORMAT_JSON:
encoder = zapcore.NewJSONEncoder(encoderConfig)
default:
encoder = zapcore.NewConsoleEncoder(encoderConfig)
}
// 添加日志切割归档功能
hook := lumberjack.Logger{
Filename: fileName, // 日志文件路径
MaxSize: MAX_SIZE, // 每个日志文件保存的最大尺寸 单位:M
MaxBackups: MAX_BACKUPS, // 日志文件最多保存多少个备份
MaxAge: MAX_AGE, // 文件最多保存多少天
Compress: true, // 是否压缩
}
core := zapcore.NewCore(