Go 语言的高性能结构化分级日志库,兼具零分配的 Logger 与更灵活的 SugaredLogger。
rs/zerolog
Go 语言的零内存分配 JSON 日志库,采用链式 API,支持分级与采样日志。
- Star
- 12,519
- Fork
- 657
- 未关闭 Issue
- 166
- 最近提交
- 10天前
这是什么?
Zerolog 是一个 Go 语言结构化日志库,默认以 JSON 格式输出日志,编译时加上标签后也可输出 CBOR 二进制格式。它通过链式 API 添加带类型的键值字段,不依赖反射,在其基准测试的常见路径中做到零内存分配。
库内提供从 trace 到 panic 共七个日志级别,支持全局和单个日志器的级别控制、日志采样,以及可为每条日志追加字段的 Hook。日志器可挂载到 context.Context 上并在之后取出,hlog 包提供了 net/http 中间件辅助功能。此外还实现了 slog.Handler,使用标准库 log/slog 的代码可以把记录交给 zerolog 输出。
本地开发时可用 zerolog.ConsoleWriter 把日志转换为带颜色、便于阅读的文本,但它比 JSON 输出慢,不适合生产环境。错误堆栈可通过 pkgerrors 子包输出。
核心功能
- 01链式 API 输出 JSON 或 CBOR,常见路径无反射、无内存分配
- 02提供七个日志级别并支持全局级别控制
- 03支持日志采样,包括突发采样和基础采样
- 04通过 Hook 为每条日志统一添加字段
- 05可与 context.Context、net/http 处理器和 log/slog 集成
- 06内置 ConsoleWriter 用于带颜色的本地输出
适用场景
- 日志量大、对内存分配敏感的 Go 服务
- 输出结构化 JSON 日志,供日志采集与分析系统使用
- 在 HTTP 服务中为每个请求附加上下文字段
- 让已使用 slog 的代码把日志统一输出到 JSON 后端
快速上手
- 1
安装模块
go get -u github.com/rs/zerolog/log - 2
导入全局日志包并输出一条日志
使用前须知
- 专注于结构化 JSON(或 CBOR)输出;要获得便于阅读的控制台输出,需使用效率较低的 ConsoleWriter。
收录于专题
标签
常见问题
- zerolog 是什么?
- Go 语言的零内存分配 JSON 日志库,采用链式 API,支持分级与采样日志。 Zerolog 是一个 Go 语言结构化日志库,默认以 JSON 格式输出日志,编译时加上标签后也可输出 CBOR 二进制格式。它通过链式 API 添加带类型的键值字段,不依赖反射,在其基准测试的常见路径中做到零内存分配。
- zerolog 可以免费使用吗?用的什么许可证?
- zerolog 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- zerolog 还在维护吗?
- 活跃维护中。zerolog 最近一次提交是在 2026年10月14日。
- zerolog 适合用来做什么?
- 日志量大、对内存分配敏感的 Go 服务 输出结构化 JSON 日志,供日志采集与分析系统使用 在 HTTP 服务中为每个请求附加上下文字段 让已使用 slog 的代码把日志统一输出到 JSON 后端
- zerolog 怎么安装和运行?
- 安装模块: go get -u github.com/rs/zerolog/log 导入全局日志包并输出一条日志
- 在哪里获取 zerolog?
- 源代码和安装说明在 GitHub 上:https://github.com/rs/zerolog
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Go 语言的结构化日志库,与标准库 log 接口兼容,支持可插拔的格式化器和钩子,目前处于维护模式。
面向 TypeScript 与 JavaScript 的通用日志库,支持美化终端输出、结构化 JSON、敏感信息脱敏,且无运行时依赖。
面向 JavaScript 与 TypeScript 的零依赖日志库,支持 Deno、Node.js、Bun、浏览器和边缘函数。
统一的 TypeScript 日志库,通过同一套链式 API 把日志路由到 Pino、云服务、文件、StatsD 和 OpenTelemetry 等后端。
Python 日志库,用一个 logger 替代标准 logging 的繁琐配置,支持文件轮转、彩色输出和结构化日志。