前言
spdlog 是一个 c++ 日志库,支持同步异步日志、多线程日志、日志格式配置、多种对端输出等功能,这篇文章对 spdlog 的源码做一个简单的梳理,主要介绍 spdlog 打印日志的流程。
总体框架
spglog 日志输出的框架如图所示

在 spdlog 中,通过 logger 前端接收想要打印的日志信息并组装成内部的 log_msg 格式,然后通过 sink 后端将日志信息同步或者异步地输出到终端、文件等多种对端。sink 支持单线程、多线程输出日志,支持不同的日志输出格式等功能。每个 logger 可以包含多个 sink,比如可以同时输出日志到终端和文件。
同步日志
使用 spdlog 同步输出日志的一段代码为:
// 1.创建一个单线程、同步的logger,输出到文件对端
std::shared_ptr<logger> logger
= synchronous_factory::create<basic_file_sink<null_mutex>>("logger", "logger.txt");
// 2.打印日志
logger->info("info log, {}, {}, {}", 1, 5.0, "ms");
logger->error("error spdlog, {}", 2);
这里创建了一个同步的、单线程,输出对端为文件的 logger,如果修改 null_mutex 为 是std::mutex,则可以创建一个支持多线程的 logger。synchronous_factory::create 的源代码为:
struc


3140

被折叠的 条评论
为什么被折叠?



