Go 第三方库之 uber-go/zap(记录日志到文件、支持自动分割日志、支持日志级别、打印调用文件、函数和行号)

本文介绍了Uber的Go日志库zap的使用,包括Logger和SugaredLogger的创建及不同模式的输出。同时,讲解了如何利用lumberjack进行日志文件的切割和归档,确保日志管理的有效性和高效性。

目录

1.简介

2.下载安装使用

注意:导入的时候得这样导入

3.zap looger使用

3.1 Logger

3.1.1NewExample

 3.1.2 NewDevelopment

 3.1.3 NewProduction

 总结

3.2 Sugared Logger

4.将日志写入文件

5.使用lumberjack进行日志切割归档

5.1 安装lumberjak 

5.2 使用


1.简介

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

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

2.下载安装使用

使用如下命令进行安装

go get -u go.uber.org/zap

go get github.com/uber-go/zap

注意:导入的时候得这样导入

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

3.zap looger使用

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

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

一般场景使用 Sugared Logger 就足够了

3.1 Logger

  • 创建logger(zap提供了三种方式来创建logger)(zap.NewProduction()/zap.NewDevelopment或za)
  • 通过创建的logger调用INFO,ERROR等进行日志输出

3.1.1NewExample

代码示例:

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("error message")
	log.Panic("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":"error message"}
{"level":"panic","msg":"panic message"}
panic: panic message

 3.1.2 NewDevelopment

代码示例:

package main

import "go.uber.org/zap"

func main() {
	log, _ := zap.NewDevelopment()
	log.Debug("this is debug message")
	log.Info("this is info message")
	log.Info("this is i
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值