开源的监控与可观测性平台,可查询、可视化并对来自多种数据源的指标、日志和链路数据设置告警。
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
使用包管理器安装 Quill,例如 vcpkg
vcpkg install quill - 2
使用 Homebrew 安装 Quill
brew install quill - 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 数据每日更新。
相关项目
Prometheus 是一套开源的系统与服务监控系统,负责采集指标、评估规则并触发告警。
基于 OpenTelemetry 的开源可观测性平台,将日志、指标、链路追踪、告警和仪表盘整合在一个可自托管的工具中。
可水平扩展、支持多租户的日志聚合系统,只索引标签而不索引日志内容。
面向微服务与云原生架构的 APM 应用性能监控系统,提供链路追踪与诊断。
可自托管的可观测性平台,统一处理日志、指标、链路追踪、前端监控和 LLM 观测,可替代 Datadog 和 Splunk。