前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >组件分享之后端组件——在Golang中最长用的日志组件zap

组件分享之后端组件——在Golang中最长用的日志组件zap

作者头像
cn華少
发布2022-04-24 19:25:21
3980
发布2022-04-24 19:25:21
举报
文章被收录于专栏:IT综合技术分享IT综合技术分享

组件分享之后端组件——在Golang中最长用的日志组件zap

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。

组件基本信息

内容

本节我们分享一个在Golang中比较常用的组件,日志组件zap,相比于其他日志组件,它的效率更加高效,以下是其官方对比结果:

记录一条消息10个字段:

使用已经有10个上下文字段的日志记录器记录消息:

日志一个静态字符串,没有任何上下文或printf风格的模板:

在使用方面,相比于内置的log包来讲有一定的复杂度,但在初始框架时我们肯定还要对其做一下简单的封装,便于其他各个模块进行快速使用,下面是其官方使用案例:

对其类型安全方面要求不是很高,性能方面要求很高时采用如下使用方式:

代码语言:javascript
复制
logger, _ := zap.NewProduction()
defer logger.Sync() // 刷新缓冲区
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
  // 将上下文结构化为松散类型的键值对。
  "url", url,
  "attempt", 3,
  "backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)

对其性能和类型安全要求很高时使用如下案例:

代码语言:javascript
复制
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("failed to fetch URL",
  // 结构化上下文作为强类型的字段值。
  zap.String("url", url),
  zap.Int("attempt", 3),
  zap.Duration("backoff", time.Second),
)

更多使用方式和框架中的封装方式,可以参考我的其他文章,FastDevelopGo框架,和其相关的Golang快速开发框架——增加日志组件zap(三),后续在使用过程中还会进行调整,建议直接参见框架中的源代码和其中的注释,能带来更好的帮助。

本文声明:

知识共享许可协议

本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022.04.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组件分享之后端组件——在Golang中最长用的日志组件zap
    • 背景
      • 组件基本信息
        • 内容
          • 记录一条消息10个字段:
          • 使用已经有10个上下文字段的日志记录器记录消息:
          • 日志一个静态字符串,没有任何上下文或printf风格的模板:
          • 对其类型安全方面要求不是很高,性能方面要求很高时采用如下使用方式:
          • 对其性能和类型安全要求很高时使用如下案例:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档