0

0

c++如何使用spdlog日志库_c++高性能异步日志框架【教程】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-12-31 17:28:02

|

889人浏览过

|

来源于php中文网

原创

spdlog 是轻量高性能 C++ 日志库,支持同步/异步、多线程安全及多种输出目标,头文件直连或 CMake 快速集成,提供控制台、文件、滚动、每日日志器,可自定义格式、级别与刷新策略。

c++如何使用spdlog日志库_c++高性能异步日志框架【教程】

spdlog 是一个轻量、高性能的 C++ 日志库,支持同步/异步日志、多线程安全、多种输出目标(控制台、文件、滚动文件等),且无需依赖 Boost 或其他重型库。它开箱即用,适合嵌入式到服务端各类项目。

快速集成:头文件直连或 CMake 引入

最简单方式是直接使用 header-only 模式:

  • GitHub 仓库 下载 include/spdlog 目录,放入项目 include 路径
  • 在源文件中 #include 即可开始使用

推荐 CMake 方式(更利于依赖管理和异步支持):

find_package(spdlog REQUIRED)
target_link_libraries(your_target PRIVATE spdlog::spdlog)

注意:若需异步日志,CMake 构建时要确保启用线程支持(默认开启),且链接 spdlog::spdlog_async

立即学习C++免费学习笔记(深入)”;

基础日志器创建与使用

spdlog 提供多种预设日志器,常用如下:

知了追踪
知了追踪

AI智能信息助手,智能追踪你的兴趣资讯

下载
  • spdlog::stdout_logger_mt("console"):多线程安全的控制台日志器
  • spdlog::basic_logger_mt("file", "logs/app.log"):写入单个文件
  • spdlog::rotating_logger_mt("rotate", "logs/app.log", 1024*1024, 5):自动滚动(最大 1MB × 5 个备份)

使用示例:

auto console = spdlog::stdout_logger_mt("console");
console->info("Hello {}", "World");           // 格式化输出(类似 fmt)
console->warn("Something went wrong");
console->error("Error code: {}", 404);

启用异步日志:提升高并发写入性能

同步日志在高频调用时可能阻塞主线程;异步模式将日志消息推入队列,由独立线程批量写入,显著降低延迟。

  • 创建异步日志器:
    auto async_file = spdlog::basic_logger_mt("async_file", "logs/async.log");
    async_file->flush_on(spdlog::level::info);
    auto async_logger = spdlog::async_logger("async", std::move(async_file), spdlog::thread_pool());
  • 更简洁方式(推荐):auto logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.txt", 2, 30); // 每天 2:30 滚动 默认就是异步的(若已初始化 thread pool)
  • 全局线程池只需初始化一次:spdlog::init_thread_pool(8192, 1); // 队列大小 8192,1 个工作线程

自定义格式、级别与行为

spdlog 默认格式为 [HH:MM:SS.NNN] [level] [logger_name] message,可轻松修改:

  • 设置全局格式:spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] [%n] %v");
  • 为特定日志器设格式:console->set_pattern("[%^%l%$] %v");
  • 调整日志级别:console->set_level(spdlog::level::debug);(支持 trace/debug/info/warn/error/critical/off)
  • 启用自动刷新(尤其对文件日志):file_logger->flush_on(spdlog::level::err);

提示:生产环境建议关闭 debug/trace 级别,避免性能损耗;可通过宏控制编译期过滤,如 #define SPDLOG_COMPILED_LIB + 静态链接进一步减小体积。

基本上就这些。spdlog 上手快、配置灵活、性能扎实,合理搭配异步+滚动+级别控制,就能支撑大多数 C++ 项目的日志需求。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

101

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

313

2023.10.11

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

263

2023.10.25

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

469

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

106

2025.12.24

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

106

2025.12.24

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

54

2025.12.01

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.3万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号