美文网首页
go语言的Zap日志库

go语言的Zap日志库

作者: 梁帆 | 来源:发表于2021-04-04 22:21 被阅读0次

一、介绍

在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能:

1、能够将事件记录到文件中,而不是应用程序控制台。

2、日志切割-能够根据文件大小、时间或间隔等来切割日志文件。

3、支持不同的日志级别。例如INFO,DEBUG,ERROR等。

4、能够打印基本信息,如调用文件/函数名和行号,日志时间等。

二、默认的Go Logger

在介绍Uber-go的zap包之前,让我们先来看看Go语言提供的基本日志功能。Go语言提供的默认日志包是https://golang.org/pkg/log/

1、实现Go Logger

实现一个Go语言中的日志记录器非常简单——创建一个新的日志文件,然后设置它为日志的输出位置。

设置日志记录器的代码如下:

设置日志记录器

下面的示例中,我们将建立一个到URL的HTTP连接,并将状态代码/错误记录到日志文件中。

示例

main函数中有:

main函数

输出如下:

输出

2、Go Logger的优势和劣势

(1)优势

它最大的优点是使用非常简单。我们可以设置任何io.Writer作为日志记录输出并向其发送要写入的日志。

(2)劣势

①仅限基本的日志级别

只有一个Print选项,不支持INFO/DEBUG等多个级别。

②对于错误日志,它有Fatal和Panic

Fatal日志通过调用os.Exit(1)来结束程序;

Panic日志在写入日志消息之后抛出一个panic;

但是它缺少一个ERROR日志级别,这个级别可以在不抛出panic或退出程序的情况下记录错误;

③缺乏日志格式化的能力

例如记录调用者的函数名和行号,格式化日期和时间格式。等等。

④不提供日志切割的能力

三、Uber-go Zap

Zap是非常快的、结构化的,分日志级别的Go日志库。

1、为什么选择Uber-go Zap

主要因为它同时提供了结构化日志记录printf风格的日志记录,而且速度非常的快。

根据Uber-go Zap的文档,它的性能比类似的结构化日志包更好——也比标准库更快。 以下是Zap发布的基准测试信息

记录一条消息和10个字段:

性能提升表

2、安装

go get -u go.uber.org/zap

3、配置和使用

Zap提供了两种类型的日志记录器—Sugared LoggerLogger

在性能很好但不是很关键的上下文中,使用SugaredLogger。它比其他结构化日志记录包快4-10倍,并且支持结构化和printf风格的日志记录。

在每一微秒和每一次内存分配都很重要的上下文中,使用Logger。它甚至比SugaredLogger更快,内存分配次数也更少,但它只支持强类型的结构化日志记录。

(1)Logger

通过调用zap.NewProduction()/zap.NewDevelopment()或者zap.Example()创建一个Logger。在通过Logger来调用info、error等方法。

默认情况下,日志都会打印到应用程序的console界面。

(2)定制Logger

相关文章

  • golang高性能日志库zap配置示例

    golang高性能日志库zap配置示例 zap是uber开源的Go高性能日志库,gitlab地址 安装 请注意,z...

  • Go-zap

    本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lu...

  • 在Go语言项目中使用Zap日志库

    本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lu...

  • go语言的Zap日志库

    一、介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 1、能够将事件记录到文件中,而不...

  • go.uber.org/zap

    参考资料 深度 | 从Go高性能日志库zap看如何实现高性能Go组件[https://mp.weixin.qq.c...

  • GO Log统一接口

    一、问题 go日志库有很多:zap、 Logrus等,它们没有统一的接口。作为中间件提供方,中间件的日志怎么输出到...

  • golang的zap怎么使用

    zap是一个高性能日志库,下面简单介绍一下zap的使用。 1.下载zap包 因为zap是uber开源的,zap内使...

  • Golang-异步日志库

    一、前言 在 Go[https://go.dev/] 社区中有很多优秀的开源日志框架(如: zap[https:/...

  • Zap日志库

    参考 https://github.com/uber-go/zap https://godoc.org/go.ub...

  • Golang错误:package ... :code in di

    下载zap库的时候 报错 而且引用包的时候 报错 查看zap的源码,发现作者开发它时的工程目录本来就是 "go.u...

网友评论

      本文标题:go语言的Zap日志库

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