文章目录
spdlog是一款开源的、快速的日志库。
spdlog库
spdlog是基于C++11实现的一款纯头文件的日志管理库(git地址:https://github.com/gabime/spdlog,API说明:https://spdlog.docsforge.com/v1.x/1.quickstart/):
- 配置特别简单,仅包含头文件即可;
- 写日志方式简单明了;
- 可实现自动按日期创建日志文件/定时创建日志文件;
- 可自定义日志格式;
- 可以输出当前输出日志所在的文件及函数;
- 可自定义文档大小;
- 可将不同级别的信息输出到不同日志文件;
- 多平台等。
spdlog中各对象都分为多线程与单线程版本:
*_st:单线程版本,不用加锁,效率更高。*_mt:多线程版本,用于多线程程序是线程安全的。
日志记录槽sink
spdlog定义了几种sinks用于不同场景(也可自定义)下的日志输出,sink中主要包含:
set_pattern(const std::string&):设置日志输出的内容格式。set_level(level_enum): 设置日志输出的最低等级。log(log_msg):由logger自动调用,外部不会主动调用。
日志记录器logger
一个logger对象中存储有多个sink,当调用logger的日志输出函数时,logger会调用自身存储的所有sink对象的log(log_msg) 函数进行输出。logger中主要包括:
set_pattern(const std::string&):设置logger包含的所有sink的日志输出内容格式。set_level(level_enum):设置logger日志输出最低等级,如果logger包含的sink没有设置日志等级的话,则会为其设置日志等级。log(level_enum level,log_msg content):按照level等级进行输出content,logger其中日志输出最低等级小于或等于level的sink会进行执行输出操作。trace(content,arg1,arg2…):按照trace等级进行输出,输出内容由content与后面的参数格式化而成。同类的函数还包括:debug/info/warn…。
输出格式pattern
通过set_pattern可设定日志格式,如set_pattern("[%Y-%m-%d %H:%M:%S.%e][%l](%@): %v");
输出标记flag:
| flag | meaning | example |
|---|---|---|
%v |
日志内容 | “my log test content” |
%t |
线程ID | “123” |
%P |
进程ID | “234” |
%n |
记录器Logger名 | “basicLogger” |
%l |
日志级别 | “debug”, “info”, etc |
%L |
日志级别简称 | “D”, “I”, etc |
%a |
星期几(简称) | “Thu” |
%A |
星期几 | “Thursday” |
%b |
月份简称 | “Aug” |
%B |
月份 | “August” |
%c |
日期时间 | “Thu Aug 23 15:35:46 2014” |
%C |
年(两位) | “14” |
%Y |
年 | “2014” |
%D %x |
日期简写 | “08/23/14” |
%m |
月份(数字) | “11” |
%d |

最低0.47元/天 解锁文章
1608

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



