golang 日志库ZAP[uber-go zap]详解

golang 日志库ZAP[uber-go zap]

1. 简要说明

zap 是 uber 开源的 Go 高性能日志库,支持不同的日志级别, 能够打印基本信息等,但不支持日志的分割,这里我们可以使用 lumberjack 也是 zap 官方推荐用于日志分割,结合这两个库我们就可以实现以下功能的日志机制:

  • 能够将事件记录到文件中,而不是应用程序控制台;
  • 日志切割能够根据文件大小、时间或间隔等来切割日志文件;
  • 支持不同的日志级别,例如 DEBUG , INFO , WARN , ERROR 等;
  • 能够打印基本信息,如调用文件、函数名和行号,日志时间等;
  • 官网地址:https://github.com/uber-go/zap

福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

2. 下载安装

// 初始化go mod 通过mod管理扩展包
go mod init zaplog

//使用下面命令安装
go get -u go.uber.org/zap

//如果下载失败,则使用以下命令重新下载安装
go get github.com/uber-go/zap

//下载安装成功后还有如下提示:
package github.com/uber-go/zap: code in directory 
src/github.com/uber-go/zap expects import "go.uber.org/zap"

3. 配置 zap Logger

zap 提供了两种类型的日志记录器—和 Logger 和 Sugared Logger 。两者之间的区别是:

  • 在每一微秒和每一次内存分配都很重要的上下文中,使用Logger。它甚至比SugaredLogger更快,内存分配次数也更少,但它只支持强类型的结构化日志记录。
  • 在性能很好但不是很关键的上下文中,使用SugaredLogger。它比其他结构化日志记录包快 4-10 倍,并且支持结构化和 printf 风格的日志记录。
  • 所以一般场景下我们使用 Sugared Logger 就足够了。

3.1 Logger

  • 通过调用zap.NewProduction()/zap.NewDevelopment()或者zap.NewExample()创建一个 Logger 。
  • 上面的每一个函数都将创建一个 logger 。唯一的区别在于它将记录的信息不同。例如 production logger 默认记录调用函数信息、日期和时间等。
  • 通过 Logger 调用 INFO 、 ERROR 等。
  • 默认情况下日志都会打印到应用程序的 console 界面。
3.1.1 NewExample
//代码示例:

package main

import (
	"go.uber.org/zap"
)

func main() {
   
   
	log := zap.NewExample()
	log.Debug("this is debug message")
	log.Info("this is info message")
	log.Info("this is info message with fileds",
		zap.Int("age", 24), zap.String("agender", "man"))
	log.Warn("this is warn message")
	log.Error("this is error message")
	log.Panic("this is panic message")

}

//输出结果:

{
   
   "level":"debug","msg":"this is debug message"}
{
   
   "level":"info","msg":"this is info message"}
{
   
   "level":"info","msg":"this is info message with fileds","age":24,"agender":"man"}
{
   
   "level":"warn","msg":"this is warn message"}
{
   
   "level":"error","msg":"this is error message"}
{
   
   "level":"panic","msg":"this is panic message"}
panic: this is panic message

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值