Logger 模式
接下来,我们简单介绍一下 Logger? 模式,它主要用于性能和类型安全比较重要的场景中,但是,它没有 SugaredLogger 模式简单易用,我们可以根据实际场景选择使用哪种模式 。
我们修改一下现有代码,新创建 InitLoggerV2? 函数,其中 enc,ws? 和 enab? 函数的代码与 SugaredLogger 模式保持一致 。
var loggerV2 *zap.Loggerfunc main() { InitLoggerV2() defer loggerV2.Sync() r := gin.Default() r.GET("/ping", ping) r.Run()}func ping(c *gin.Context) { loggerV2.Debug("call func ping", zap.Int("code", 200)) c.JSON(http.StatusOK, gin.H{"message": "pong", })}func InitLoggerV2() { core := zapcore.NewCore(enc(), ws(), enab()) loggerV2 = zap.New(core)}阅读上面这段代码,我们可以发现,在使用 zap 记录日志时,我们需要显示指定数据类型,一般用于性能和类型安全比较重要的场景中 。
4、zap 日志库使用 lumberjack 库进行日志切割Zap 日志库也不支持日志切割的功能,我们可以使用 lumberjack? 日志切割库进行日志切割,关于 lumberjack 库的使用方式,我们在之前的文章介绍过,此处不再重复介绍,直接上代码:
func wsV3() zapcore.WriteSyncer { logFileName := fmt.Sprintf("./%v.log", time.Now().Format("2006-01-02")) lumberjackLogger := &lumberjack.Logger{Filename:logFileName,MaxSize:1,MaxBackups: 3,MaxAge:28,Compress:false, } return zapcore.AddSync(lumberjackLogger)}lumberjack.Logger 的字段含义:
- Filename 日志保存文件路径
- MaxSize 日志文件大小,单位是 MB
- MaxBackups 保留的日志文件数量
- MaxAge 日志文件的最长保留时间,单位是天
- Compress 日志文件是否需要压缩
参考资料:
- https://github.com/uber-go/zap
- https://pkg.go.dev/go.uber.org/zap
【Go 语言怎么使用 Zap 日志库?】
推荐阅读
- 放弃ElasticSearch,GitHub从零打造搜索引擎!2亿代码仓库怎么搜?
- Java到底能不能使用异常来控制流程?
- 如何使用Buddy自动部署到SFTP服务器
- ap100编程教程视频!ap100破解版怎么注册
- 矮人dos工具箱怎么用-矮人DOS工具箱的作用是什么?
- 苹果手机序列号查询官网激活日期.苹果手机序列号怎么查,到那个网址查?
- 患上了甲肝怎么办? 治疗甲型肝炎
- 黑蚂蚁怎么吃效果好 黑蚂蚁怎么吃
- 怎么取消页码设置,如何消除ppt页码
- 金士顿防伪码在.怎么识别金士顿内存条真伪 从哪里可以看得出来
