spdlog 日志库嵌入式 Linux C++使用指南
文档信息
| 项目 | 内容 |
|---|---|
| 适配 spdlog 版本 | v1.12.0 |
| 适用场景 | ARM 架构 Linux 系统、C++11 及以上、嵌入式应用日志输出 |
| 前置依赖 | CMake 3.10+、C++11 编译器、Linux glibc 2.28+ |
一、工具介绍
1.1 工具定位
spdlog 是一款高性能、头文件优先的 C++ 日志库,支持同步/异步日志输出,无第三方依赖,适配嵌入式 Linux 资源受限场景,可快速集成到 C++ 项目中实现灵活的日志管理。
1.2 核心特性
- 零外部依赖,纯头文件 + 源码集成,适配嵌入式交叉编译;
- 支持 TRACE/DEBUG/INFO/WARN/ERROR/CRITICAL 6 级日志级别;
- 多输出目标:控制台、文件、滚动文件(按大小/时间分割);
- 线程安全设计,支持多线程环境下日志输出;
- 自定义日志格式(时间、进程 ID、线程 ID、日志级别等);
- 低内存占用,适配嵌入式闪存/内存受限场景。
1.3 对比优势(嵌入式场景)
| 对比项 | spdlog | log4cpp |
|---|---|---|
| 依赖 | 无 | 依赖 log4j、apr 等库 |
| 编译体积 | 小(仅需编译核心源码) | 大(依赖库编译后体积大) |
| 内存占用 | 低(支持按需加载) | 高(初始化加载全量组件) |
| 嵌入式适配性 | 优(头文件优先,支持交叉编译) | 差(依赖复杂,需手动移植) |
二、快速集成
2.1 集成方式 1:源码集成(嵌入式推荐)
步骤 1:下载源码
git clone https://github.com/gabime/spdlog.git
cd spdlog && git checkout v1.12.0 # 固定版本,避免兼容性问题
步骤 2:项目集成
将 spdlog 源码目录下的 include/spdlog 文件夹拷贝到项目的 include 路径下;
将 src/ 目录下的所有 .cpp 文件拷贝到项目的 third_party/spdlog 目录下(仅需编译一次)。
步骤 3:CMakeLists.txt 配置
# 1. 添加头文件路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 2. 添加 spdlog 源码编译
file(GLOB SPDLOG_SRC ${PROJECT_SOURCE_DIR}/third_party/spdlog/*.cpp)
add_library(spdlog STATIC ${SPDLOG_SRC})
# 3. 链接 spdlog 库到项目
add_executable(your_project main.cpp)
target_link_libraries(your_project spdlog pthread) # 依赖 pthread(线程安全)
# 4. 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


