目录
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

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

被折叠的 条评论
为什么被折叠?



