如何打造Zap开箱即用日志组件
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇文章为大家展示了如何打造Zap开箱即用日志组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。logrus 是 golang 一款非常优秀的日志框架, 其优
千家信息网最后更新 2025年02月06日如何打造Zap开箱即用日志组件
本篇文章为大家展示了如何打造Zap开箱即用日志组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
logrus 是 golang 一款非常优秀的日志框架, 其优点非常明显:
优雅的代码框架设计, 可以作为我们设计组件的参考. 具体请参见我前面文章(链接文末给出) 使用简单 组件化的开发思路 灵活的输出方式
但是, 性能终究是忍痛舍弃 logrus 的"阿喀琉斯之踵", 前面的文章深入研究了 logrus 性能低的原因
目前 golang 日志库的大众选择主要集中在: logrus, zap, zerolog. zap 和 zerolog 的性能都是优秀的, 但是从用法习惯上我更倾向于 zap.
简单介绍 Zap 的使用
Zap 提供三种不同方式的输出(以 Info为 例)
log.Info("hello zap") // {"level":"info","ts":1576423173.016333,"caller":"test_zap/main.go:28","msg":"hello zap"}
log.Infof("hello %s", "zap") // {"level":"info","ts":1576423203.056074,"caller":"test_zap/main.go:29","msg":"hello zap"}
log.Infow("hello zap", "field1", "value1") //{"level":"info","ts":1576423203.0560799,"caller":"test_zap/main.go:30","msg":"hello zap","field1":"value1"}
如果我们对 logrus 的 key-value 理论比较在意的话, 使用 zap infow 可以完美解决
Zap 使用起来不便利的地方
Zap 使用上不能像 logrus 那样开箱即用 使用者需要自己去组装相关函数 Zap 同样不提供日志切割的功能, 但是想添加上这个功能没有 logrus 那样便利
基于这些问题, 我封装了一套开箱即用的日志组件: https://github.com/georgehao/log
打造 Zap 开箱即用日志组件
提供的功能:
像 logrus 一样, 全局的 Debug, Info ... 函数 日志分割功能. 默认文件大小1024M,自动压缩, 最大有3个文件备份,备份保存时间7天, 不会打印日志被调用的文文件名和位置 日志默认会被分成五类文件:xxx.log.DEBUG,xxx.log.INFO, xxx.log.WARN, xxx.log.ERROR, xxx.log.Request. error, panic. fatal 都会打印在xxx.log.ERROR. xxx.log.Request输出 request log 的地方(如果有需要的话)
框架图
使用方法
go get github.com/georgehao/log
例子
package main
import "github.com/georgehao/log"
func main() {
// init log
// set absolute path, and level
// set output level
// don't need request log
// set log's caller using logOption
log.Init("./test.log", log.DebugLevel, false, log.SetCaller(true))
log.Info("hello george log")
// flush
log.Sync()
//output: {"level":"info","ts":"2019-12-16T10:37:11.364+0800","caller":"example/example.go:12","msg":"hello george log"}
}
上述内容就是如何打造Zap开箱即用日志组件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
日志
组件
功能
文件
性能
文章
框架
输出
优秀
内容
函数
地方
备份
技能
方式
知识
设计
不同
明显
简明
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
集群服务器抽奖
国内3d设计软件开发
网络安全运维工程师好吗
sql数据库安装到使用
c语言软件开发的书
互联网大厂科技公司
单机版用什么数据库
留学生论文数据库管理网站
如何使用超图的软件开发地图
网络安全心得体会250
工控安全和网络安全
sql数据库怎么设置成中文字
跨平台软件开发 pdf
云迅服务器
马来西亚软件开发靠谱吗
网络安全是指分布网络环境
关于服务器的安全维护措施
河南智金网络技术
蚂蚁金服支付宝付网络技术部
津科档案软件恢复数据库的办法
管家婆数据库sa错误
厂站网络安全监测装置
数据库导论第六章答案
软件开发模型选型题
网络安全对银行发展的重要性
软件开发高级程序员
支付公司换服务器模块要多长时间
软件开发与其他学科
ionic 上拉加载数据库
计算机网络技术 视频