- zap项目地址:https://github.com/uber-go/zap
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

本文介绍了如何在Gin web框架中集成 zap 日志库,通过自定义配置项和常量实现日志归档功能。详细步骤包括创建`log.go`和`constant.go`文件,初始化路由并引入日志框架,调用相关配置以生效,使用Go Module管理依赖并启动服务。最后,提供了测试效果和参考资料。
最低0.47元/天 解锁文章

1318

被折叠的 条评论
为什么被折叠?



