spdlog 简要解析

前言

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucy_stone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值