spdlog简介

1. 基本结构

spdlog整体结构可分成三层,
由下及上分别是sink、logger以及logger registry。

  • sink执行具体的动作,如写入日志文件或者输出到命令行;
  • logger,用户一般直接调用logger,执行相关动作,logger会调用自身的所有sink进行输出;
  • registry管理所有的logger,用户创建的logger会注册到registry统一管理。例如可通过spdlog::get()访问已创建的logger。

2. 日志类型

根据输出类型基本可分为输出到终端和文件两种类型,其中输出文件类型可进一步分为按文件大小和日期滚动刷新。
按日期滚动刷新是指每隔24小时,到达指定的时间后会创建新的日志文件;
按文件大小滚动刷新是指日志文件尺寸达到设定值后,会将当前文件添加后缀进行重命名,然后创建新的空日志文件进行写入。
此外,spdlog还支持自定义日志写入规则,可通过自定义sink类实现。

3. 基本使用

3.1. 刷新机制

spdlog使用中需要设置刷新规则,以防止诸如程序闪退时日志未及时写入导致无法通过日志内容分析程序崩溃原因。
刷新设置主要有两种设置方式,一种是全局设置,一种是对于重要的日志信息之后,立即写入。
全局设置支持设置刷新周期和刷新级别两种方式。
flush_on()flush_every()

3.2. 日志级别

spdlog默认支持七层级别,从trace至off严重程度递增。

  • trace
  • debug
  • info
  • warn
  • err
  • critical
  • off
3.3. 日志格式设置

spdlog支持自定义日志格式,但是自定义的logger往往不支持自定义格式,需要使用spdlog提供的宏定义调用,可以实现自定义输出格式。

spdlog可以只依靠头文件,不需依赖库,方便使用。

4. 相关术语

术语释义
logger用于记录日志的对象
rotate日志文件的切换
registry注册处,从统一一个位置来获得logger
sink实际执行落日志到文件或DB动作的类
mtmultiple-thread 的缩写,带_mt后缀的是多线程安全的
stsingle-thread的缩写,带_st的函数非线程安全的
exexception的缩写,spdlog::spdlog_ex
slot插槽,在spdlog线程池构造时,预分配queue slot
tweaking(稍稍改进),自己可以指定一些参数。
flush刷日志
bundled捆绑的,spdlog/include/spdlog/fmt/bundled/ 使用的外部库的代码
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值