深入浅出(三)spdlog库

1. spdlog简介

spdlog 是一个非常快速、轻量级的 C++ 日志库,旨在提供高效的日志记录功能。它的设计目标是既高效又简单,支持多种日志级别和格式化选项,并且易于集成到 C++ 项目中。

主要特点:

  • 高性能:spdlog 采用了非常高效的日志记录方式,支持异步日志记录。
  • 多种日志级别:它支持不同的日志级别,例如 trace, debug, info, warn, error, critical 等。
  • 格式化:支持使用类似 printf 的格式化语法来定制日志的输出格式。
  • 多目标输出:支持将日志输出到控制台、文件或其他输出目标。
  • 异步日志:通过异步日志记录,spdlog 可以在性能要求高的环境中减少日志记录对性能的影响。
  • 线程安全:支持多线程环境,可以在多个线程中安全地记录日志。
  • 简单的接口:spdlog 的 API 简洁直观,易于集成和使用。

常见的日志级别:

  • trace:非常详细的日志,用于开发时的调试。
  • debug:调试信息,通常用于开发和测试环境。
  • info:常规信息日志,用于输出系统的正常运行状态。
  • warn:警告信息,表示系统的潜在问题。
  • error:错误信息,表示系统出现了问题,需要注意。
  • critical:严重错误,表示系统可能崩溃或无法继续运行。

1.1 spdlog下载

地址
GitHub地址 https://github.com/gabime/spdlog
log4cplus库应用 深入浅出(二)log4cplus库

1.2 log4cplus与spdlog区别

特性 log4cplus spdlog
性能 性能较低(但支持异步) 高性能,适合高频率日志记录
功能 丰富的功能,支持配置文件 简洁的功能,专注高效日志记录
配置方式 配置文件(XML, properties) 代码配置,无配置文件支持
易用性 学习曲线较陡,功能复杂 易于使用,快速集成
线程安全 支持线程安全 支持线程安全,专为并发设计
跨平台 跨平台支持较好 跨平台支持较好
适用场景 适合需要灵活配置和功能丰富的项目 适合对性能要求高的项目

如何根据实际需求选择呢?

  • 选择 log4cplus:如果你需要复杂的日志管理功能(如配置文件支持、日志轮转等),并且不太担心性能瓶颈,log4cplus 会是一个不错的选择。
  • 选择 spdlog:如果你需要一个高性能的日志库,且项目的重点是性能优化(尤其是在多线程或高并发场景下),spdlog 是一个更合适的选择。

2. spdlog配置

全部代码都在项目的include文件夹下,直接引用到自己的项目里就能用。

#日志
include_directories(${Third_Libraries_DIR}/spdlog)

3. C++实际应用

3.1 基本应用

包含头文件

#include <spdlog/spdlog.h>

初始化日志

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::debug("This message should be displayed..");

设置日志级别

spdlog::set_level(spdlog::level::debug); // 设置全局日志级别为 debug
spdlog::debug("This message should be displayed..");

自定义日志格式

spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] [%n] %v");
spdlog::info("Custom format message");

logger::set_pattern("%^[%T] %n: %v%$"); // 自定义输出格式
logger
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小老鼠不吃猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值