quill
更新于 2026-09-03 15:41:40 · 创建于 2026-09-03 15:39:35
quill:低延迟的异步 C++ 日志库
quill 是一款专为低延迟、性能敏感型应用设计的高性能异步 C++ 日志库。它的核心思路是把日志的格式化与 I/O 操作都移交给后台线程,主线程只做极轻量的入队,从而把日志对业务路径的性能影响降到最低。
核心能力
- 异步架构:前端(Frontend)在调用线程把日志对象化并入队,后端(Backend)后台线程负责格式化与落盘/输出,主线程几乎零阻塞。
- 低延迟:针对高频交易、游戏引擎、实时系统等对尾延迟敏感的场景优化,避免日志导致的卡顿尖刺。
- 易用 API:以 quill::Backend::start() 启动后端,用 quill::Frontend::create_or_get_logger 取 logger,随后 LOG_INFO(logger, "Hello from {}", ...) 即可,宏风格贴近常见日志库。
- 多 sink:内置 ConsoleSink、文件 sink 等,可按需组合输出目标。
适用场景
- 高频交易、行情系统的纳秒级敏感日志。
- 游戏引擎、仿真、实时服务中需要持续打点但不想拖累帧率/吞吐的环节。
- 任何追求稳定尾延迟、反感同步日志阻塞的 C++ 项目。
上手与二开建议
- 在程序启动早期调用 quill::Backend::start(),再创建 logger 使用。
- 把日志密集路径迁到异步 sink,对比同步库观察 P99 延迟改善。
- 二开/集成:可自定义 sink 与格式化器;注意后端线程生命周期,程序退出前保证日志刷盘。
注意事项
- 上手难度中等:API 简单,但异步模型需注意启动顺序与优雅退出。
- 协议为 MIT,集成到产品时按常规引用即可。