Repolode
uber-go

uber-go/zap

Go 语言的高性能结构化分级日志库,兼具零分配的 Logger 与更灵活的 SugaredLogger。

Star
24,678
Fork
1,575
未关闭 Issue
201
最近提交
上个月

这是什么?

Zap 是一个 Go 语言日志库,输出结构化日志,支持带类型的键值字段和日志级别。它面向在热点代码路径上大量打日志的应用,避免了基于反射的序列化和字符串格式化带来的 CPU 与内存分配开销。

Zap 提供两套 API:Logger 使用强类型的 Field,大多数调用不产生内存分配;SugaredLogger 接受松散类型的键值对,并支持 printf 风格格式化,性能略低但写法更熟悉。两者都建立在无反射的 JSON 编码器之上。项目自带基准测试,并与 zerolog、slog、logrus 等库做了对比。

该库在 pkg.go.dev 提供完整文档,API 已标记为稳定,1.x 系列不会引入破坏性变更。它支持 Go 最近的两个次版本。

核心功能

  • 01基于强类型 Field 的结构化日志。
  • 02SugaredLogger 提供松散类型键值对和 printf 风格的写法。
  • 03无反射、零分配的 JSON 编码器。
  • 04支持分级日志,并提供生产和开发两种预设配置。

适用场景

  • 对延迟敏感、需要控制内存分配的 Go 服务日志记录。
  • 输出可被日志采集系统解析的 JSON 日志。
  • 在后端服务中为请求附加结构化上下文字段。

快速上手

  1. 1

    使用 go get 安装 zap 库

    go get -u go.uber.org/zap
  2. 2

    创建生产环境日志记录器并使用 SugaredLogger 记录日志

使用前须知

  • 仅支持最近的两个 Go 次要版本。

收录于专题

标签

常见问题

zap 是什么?
Go 语言的高性能结构化分级日志库,兼具零分配的 Logger 与更灵活的 SugaredLogger。 Zap 是一个 Go 语言日志库,输出结构化日志,支持带类型的键值字段和日志级别。它面向在热点代码路径上大量打日志的应用,避免了基于反射的序列化和字符串格式化带来的 CPU 与内存分配开销。
zap 可以免费使用吗?用的什么许可证?
zap 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
zap 还在维护吗?
半年内有更新。zap 最近一次提交是在 2026年9月16日。
zap 适合用来做什么?
对延迟敏感、需要控制内存分配的 Go 服务日志记录。 输出可被日志采集系统解析的 JSON 日志。 在后端服务中为请求附加结构化上下文字段。
zap 怎么安装和运行?
使用 go get 安装 zap 库: go get -u go.uber.org/zap 创建生产环境日志记录器并使用 SugaredLogger 记录日志
在哪里获取 zap?
源代码和安装说明在 GitHub 上:https://github.com/uber-go/zap

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目