如何打造Zap开箱即用日志组件
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章为大家展示了如何打造Zap开箱即用日志组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。logrus 是 golang 一款非常优秀的日志框架, 其优
千家信息网最后更新 2025年12月02日如何打造Zap开箱即用日志组件
log
本篇文章为大家展示了如何打造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安全错误
数据库的锁怎样保障安全
网易版服务器最新推荐
社区网络安全日记
如何做软件开发的职业规划
女生网络技术
家长群网络安全
软件开发 南京
山西云手机服务器租用
软件开发计划里基线怎么写
数据网络安全管理
抓好网络安全建设
网络技术岗做什么工作
永大电梯没有服务器怎么清故障
网络安全可以做什么活动
怎样普及网络安全知识
软件开发的社会意义
电脑程序的数据库在哪
软件开发高手
丽水工业软件开发教程
本地调试接口远程服务器403
小米宏观经济数据库
mysql数据库目录
网络技术与信息工程一样不
内蒙公安厅网络安全监控中心
怎么制作网络安全方面的书签
如何进行数据库中的表备份
lol网三服务器所在地
陕煤网络安全考试题及答案
学完编程如何做软件开发
科技互联网时代的英文
软件开发周期分为哪几个阶段