如何打造Zap开箱即用日志组件-成都快上网建站

如何打造Zap开箱即用日志组件

本篇文章为大家展示了如何打造Zap开箱即用日志组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联制作网站网页找三站合一网站制作公司,专注于网页设计,网站制作、成都网站制作,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为近1000家服务,创新互联网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!

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 使用起来不便利的地方

  1. Zap 使用上不能像 logrus 那样开箱即用
  2. 使用者需要自己去组装相关函数
  3. 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 的地方(如果有需要的话)
 

框架图

如何打造Zap开箱即用日志组件  
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开箱即用日志组件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


网站标题:如何打造Zap开箱即用日志组件
标题路径:http://kswjz.com/article/podoec.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流