全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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

基础日志器创建与使用

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

  • 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++ 项目的日志需求。


# git  # github  # app  # ai  # c++  # 格式化输出  # red  # asic  # define  # include  # Error  # auto  # 线程  # 多线程  # 主线程  # Thread  # 并发  # console  # 异步  # 自定义  # 高性能  # 是一个  # 头文件  # 只需  # 或其他  # 可通过  # 最简单  # 时要 


相关文章: 建站主机服务器选购指南:轻量应用与VPS配置解析  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站之星CMS五站合一模板配置与SEO优化指南  如何安全更换建站之星模板并保留数据?  如何用虚拟主机快速搭建网站?详细步骤解析  如何零基础开发自助建站系统?完整教程解析  家具网站制作软件,家具厂怎么跑业务?  ,巨量百应是干嘛的?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站之星后台密码遗忘如何找回?  企业微网站怎么做,公司网站和公众号有什么区别?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速搭建个人网站并优化SEO?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  C#怎么使用委托和事件 C# delegate与event编程方法  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站主机无法访问?如何排查域名与服务器问题  制作营销网站公司,淘特是干什么用的?  建站VPS推荐:2025年高性能服务器配置指南  高防服务器租用指南:配置选择与快速部署攻略  平台云上自主建站:模板化设计与智能工具打造高效网站  Python多线程使用规范_线程安全解析【教程】  如何在阿里云购买域名并搭建网站?  完全自定义免费建站平台:主题模板在线生成一站式服务  网站制作模板下载什么软件,ppt模板免费下载网站?  如何快速选择适合个人网站的云服务器配置?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Swift中循环语句中的转移语句 break 和 continue  建站之星代理商如何保障技术支持与售后服务?  购物网站制作公司有哪些,哪个购物网站比较好?  ,在苏州找工作,上哪个网站比较好?  建站之星代理如何优化在线客服效率?  如何彻底卸载建站之星软件?  ,制作一个手机app网站要多少钱?  相册网站制作软件,图片上的网址怎么复制?  建站之星导航菜单设置与功能模块配置全攻略  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Thinkphp 中 distinct 的用法解析  实现点击下箭头变上箭头来回切换的两种方法【推荐】  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  装修招标网站设计制作流程,装修招标流程?  建站之星安装后如何自定义网站颜色与字体?  如何在万网自助建站中设置域名及备案?  在线制作视频网站免费,都有哪些好的动漫网站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  网站制作员失业,怎样查看自己网站的注册者?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。