spdlog 是轻量高性能 C++ 日志库,支持同步/异步、多线程安全及多种输出目标,头文件直连或 CMake 快速集成,提供控制台、文件、滚动、每日日志器,可自定义格式、级别与刷新策略。
spdlog 是一个轻量、高性能的 C++ 日志库,支持同步/异步日志、多线程安全、多种输出目标(控制台、文件、滚动文件等),且无需依赖 Boost 或其他重型库。它开箱即用,适合嵌入式到服务端各类项目。
最简单方式是直接使用 header-only 模式:
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小时内与您取得联系。