【C++】spdlog光速入门,C++logger最简单最快的库

本文介绍了C++高效的日志库spdlog,包括如何获取和安装,核心概念如logger、sink和formatter的使用,以及如何自定义格式和设置日志级别。示例展示了创建控制台和文件sink,以及如何注册和获取logger。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spdlog简介

Very fast, header only, C++ logging library.
一个header-only的C++日志库,十分高效且易用。

获取安装方式#

https://github.com/gabime/spdlog
使用时只需要将git项目内的/include/spdlog文件夹整个放入项目的include目录下即可

使用样例#

 

Copy

#include "spdlog/spdlog.h" int main() { spdlog::info("Welcome to spdlog!"); spdlog::error("Some error message with arg: {}", 1); spdlog::warn("Easy padding in numbers like {:08d}", 12); spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42); spdlog::info("Support for floats {:03.2f}", 1.23456); spdlog::info("Positional args are {1} {0}..", "too", "supported"); spdlog::info("{:<30}", "left aligned"); spdlog::set_level(spdlog::level::debug); // Set global log level to debug spdlog::debug("This message should be displayed.."); // change log pattern spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v"); // Compile time log levels // define SPDLOG_ACTIVE_LEVEL to desired level SPDLOG_TRACE("Some trace message with param {}", 42); SPDLOG_DEBUG("Some debug message"); }

快速入门

几个核心概念#

  • logger:日志对象,每个日志内包含一个sink组成的vector,每个sink可以分别设置优先级,logger本身也可设置优先级
  • sink:直译是水槽,实际上是引流的对象或者可以认为是输出目标,spdlog库内置了多种不同类型的logger可供选择
  • formatter:格式化对象,绝大部分情况下spdlog默认的格式就足够用了,但是如果有个性化需求,可以进行自定义格式
  • level:日志级别,不同的日志库可能会有不同的设置,但是基本情况下都会有debug、info、warn、error等的级别划分来处理不同的情况,具体各个级别的情况可以根据自己的实际情况选取

逻辑关系:每个logger包含一个vector,该vector由一个或多个std::shared_ptr<sink>组成,logger的每条日志都会调用sink对象,由sink对象按照formatter的格式输出到sink指定的地方(有可能是控制台、文件等),接下来我们从内到外的讲解spdlog的这三个核心组件

formatter#

formatter也即格式化对象,用于控制日志的输出格式,spdlog自带了默认的formatter,一般情况下,我们无需任何修改,直接使用即可。注意,每个sink会有一个formatter

默认formatter#

默认formatter的格式为:[日期时间] [logger名] [log级别] log内容

 

Copy

[2022-10-13 17:00:55.795] [sidecar] [debug] found env KAFKA_PARTITION_VALUE : -1 [2022-10-13 17:00:55.795] [side

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值