Zap之日志记录器

  • 2022-10-26
  • 浏览 (462)

zap是非常火的一款 golang 日志记录器。

在Zap中存在两个日志器模式:

  • Logger
  • SugaredLogger

这两种模式的最大区别在于是否类型安全,SugarLogger可以接收松散类型和多键值对:

//在第四行可以看到sugar的信息记录不需要显式的声明变量类型
sugar := zap.NewExample().Sugar()
defer sugar.Sync()
sugar.Infow("failed to fetch URL",
  "url", "http://seaxiang.com",
  "attempt", 3,
  "backoff", time.Second,
)
sugar.Infof("failed to fetch URL: %s", "http://.com")

与之对应了 Logger 需要显式的声明日志变量(strongly-typed)的类型:

同时,官方建议在高性能场景使用 Logger,其性能比 sugarLogger 要高。

logger := zap.NewExample()
defer logger.Sync() //默认logger是使用无缓冲的,但是可以设置为有缓冲的,所以要习惯于使用defer关闭日志变量
logger.Info("failed to fetch URL",
  zap.String("url", "http://seaxiang.com"),
  zap.Int("attempt", 3),
  zap.Duration("backoff", time.Second),
)

LoggersugarLogger 的相互转换

logger := zap.NewExample()
defer logger.Sync()
sugar := logger.Sugar()
plain := sugar.Desugar()
0  赞