Repolode
odygrd

odygrd/quill

面向 C++17 的超低延迟异步日志与指标库,将格式化和 I/O 交给后台线程处理。

Star
3,057
Fork
274
未关闭 Issue
7
最近提交
4天前

这是什么?

Quill 是一个 C++17 日志库,把格式化和 I/O 操作从对延迟敏感的业务线程中移出。调用线程只负责把日志参数编码到每线程的无锁队列中,后台工作线程再完成解码、使用 {fmt} 格式化,并写入配置好的输出目标。

除文本日志外,Quill 还可以通过同一异步后台发布预先注册的指标样本。内置的 Prometheus sink 支持计数器、仪表盘、直方图和摘要,自定义 sink 可以把数据转发到 StatsD、OpenTelemetry 等采集系统。此外还提供带颜色的控制台输出、文件轮转、JSON 输出、按 sink 设置的过滤器、MDC 上下文、限频宏以及回溯日志。

该库支持 Linux、macOS、Windows 和 BSD,可通过 vcpkg、Conan、Homebrew、Conda、Bzlmod 等包管理器安装,也可以用 CMake 直接引入源码。它同时提供延迟最低的宏接口和无宏的函数接口。

核心功能

  • 01调用线程只编码参数,格式化工作交给后台线程完成。
  • 02通过内置 Prometheus sink 和自定义 sink 发布预注册指标。
  • 03支持带颜色的控制台输出、文件轮转和 JSON 日志。
  • 04提供按 sink 设置的过滤器、MDC 上下文和限频日志宏。
  • 05可配置有界或无界队列,以及阻塞或丢弃策略。
  • 06包含崩溃信号处理器和 Android 日志输出。

适用场景

  • 在对延迟敏感的 C++ 交易、机器人或实时系统中记录日志。
  • 为高吞吐的 C++ 服务增加异步结构化日志。
  • 从 C++ 进程向 Prometheus 导出应用指标。
  • 在 Linux、macOS、Windows、BSD 或 Android 平台上使用 C++ 日志。

快速上手

  1. 1

    使用包管理器安装 Quill,例如 vcpkg

    vcpkg install quill
  2. 2

    使用 Homebrew 安装 Quill

    brew install quill
  3. 3

    在 C++ 代码中使用 simple_logger() 记录日志到控制台或文件,参见快速设置示例

使用前须知

  • 需要 C++17 或更高版本。

标签

常见问题

quill 是什么?
面向 C++17 的超低延迟异步日志与指标库,将格式化和 I/O 交给后台线程处理。 Quill 是一个 C++17 日志库,把格式化和 I/O 操作从对延迟敏感的业务线程中移出。调用线程只负责把日志参数编码到每线程的无锁队列中,后台工作线程再完成解码、使用 {fmt} 格式化,并写入配置好的输出目标。
quill 可以免费使用吗?用的什么许可证?
quill 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
quill 还在维护吗?
活跃维护中。quill 最近一次提交是在 2026年10月17日。
quill 适合用来做什么?
在对延迟敏感的 C++ 交易、机器人或实时系统中记录日志。 为高吞吐的 C++ 服务增加异步结构化日志。 从 C++ 进程向 Prometheus 导出应用指标。 在 Linux、macOS、Windows、BSD 或 Android 平台上使用 C++ 日志。
quill 怎么安装和运行?
使用包管理器安装 Quill,例如 vcpkg: vcpkg install quill 使用 Homebrew 安装 Quill: brew install quill 在 C++ 代码中使用 simple_logger() 记录日志到控制台或文件,参见快速设置示例
在哪里获取 quill?
源代码和安装说明在 GitHub 上:https://github.com/odygrd/quill

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

相关项目