Repolode
rs

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. 1

    安装模块

    go get -u github.com/rs/zerolog/log
  2. 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 数据每日更新。

相关项目