美文网首页开发组件
组件分享之后端组件——在Golang中最长用的日志组件zap

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

作者: cn華少 | 来源:发表于2022-04-08 23:51 被阅读0次

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

    背景

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

    组件基本信息

    内容

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

    记录一条消息10个字段:

    image.png

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

    image.png

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

    image.png

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

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

    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)
    

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

    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(三),后续在使用过程中还会进行调整,建议直接参见框架中的源代码和其中的注释,能带来更好的帮助。

    本文声明:
    88x31.png
    知识共享许可协议
    本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

    相关文章

      网友评论

        本文标题:组件分享之后端组件——在Golang中最长用的日志组件zap

        本文链接:https://www.haomeiwen.com/subject/jshysrtx.html