spdlog 是一个广受赞誉的现代 C++ 日志库,专为性能与易用性而生。它解决了传统日志方案中常见的痛点:编译慢、运行慢、配置繁琐、线程不安全。无论是嵌入式设备、游戏引擎还是高频交易系统,只要需要稳定、高速、低开销的日志记录能力,spdlog 都能成为你的首选工具。
核心功能
- 极致性能:基于无锁队列和异步写入设计,日志吞吐量远超老牌库(如 log4cpp、boost.log),实测比 std::cout 快 5–10 倍以上
- 头文件即用(Header-only):无需编译安装,仅复制 include/spdlog 目录即可集成,特别适合快速原型开发或轻量级项目
- 丰富输出目标:支持控制台、文件(按大小/时间轮转)、系统日志(syslog)、自定义 sink,可同时输出到多个目的地
- 线程安全 & 异步支持:所有 API 默认线程安全;内置异步日志模式,避免 I/O 阻塞主线程,大幅提升响应敏感型应用的稳定性
- 灵活格式化与级别控制:支持类似 Python 的 format 语法(如 “{} {}”),内置 TRACE/DEBUG/INFO/WARN/ERROR/CRITICAL 六级日志,支持运行时动态调整级别
- 跨平台开箱即用:原生支持 Linux/macOS/Windows/FreeBSD/Android 等主流平台,CMake 构建流程清晰,兼容 MSVC、Clang、GCC 等主流编译器
适合哪些人用
如果你是 C++ 开发者——无论你是开发高性能服务端、实时音视频处理模块、自动驾驶中间件,还是维护大型桌面软件、嵌入式固件,甚至正在学习现代 C++ 编程——spdlog 都值得你花 5 分钟集成。尤其推荐给追求“零额外依赖”“编译速度快”“日志不拖慢主逻辑”的工程师;对于团队协作项目,它简洁统一的 API 也能显著降低日志模块的学习与维护成本。
快速上手
最简单方式(头文件版):下载源码后,将 include/spdlog 文件夹复制到项目目录,添加 #include <spdlog/spdlog.h> 即可使用:
auto logger = spdlog::stdout_logger_mt("console");
logger->info("Hello, {}!", "openklc");
logger->error("Something went wrong: {}", 42);
生产环境更推荐编译版本(编译一次,后续编译极快):克隆仓库 → 创建 build 目录 → 运行 CMake 构建 → 安装或链接生成的库。主流包管理器也已全面支持:apt install libspdlog-dev(Ubuntu/Debian)、brew install spdlog(macOS)、pacman -S spdlog(Arch Linux)等,一行命令完成部署。
项目信息
编程语言:C++11 及以上|GitHub Star 数:29,385|开源协议:MIT 许可证(注:项目页面显示 NOASSERTION 实为元数据缺失,实际 LICENSE 文件明确采用 MIT 协议)|GitHub 项目地址
日志不该是性能瓶颈,更不该成为工程负担——spdlog 用极简接口和硬核优化,重新定义了 C++ 日志体验。


