答案:spdlog是C++中高性能、头文件-only的日志库,支持同步/异步日志、多线程安全、自定义格式与输出目标,可通过vcpkg、Conan或源码集成,提供简洁API用于创建记录器、设置级别与模式,适用于调试与生产环境。

在C++项目中,日志是调试、监控和排查问题的重要工具。spdlog 是一个高性能、轻量级的 C++ 日志库,基于现代 C++(C++11 及以上)设计,支持多线程安全、异步日志、多种日志级别和格式化输出,广泛应用于生产环境。
spdlog 是头文件-only 的库,使用非常方便,无需编译即可集成到项目中。
方法一:通过 vcpkg 安装
vcpkg install spdlog方法二:通过 Conan 安装
立即学习“C++免费学习笔记(深入)”;
conan install spdlog/1.11.0@方法三:直接下载源码
从 GitHub 下载 spdlog 源码:
https://github.com/gabime/spdlog将 include 目录添加到你的编译器包含路径中即可使用。
spdlog 提供了简洁的接口,可以快速创建日志记录器并输出信息。
以下是一个简单的同步日志示例:
#include <spdlog/spdlog.h>默认情况下,spdlog 使用一个名为 “default” 的全局记录器,输出到控制台,支持颜色高亮。
你可以自定义日志格式,并将日志输出到文件或其他目标。
设置日志格式:
spdlog::set_pattern("[%Y-%m-%d %H:%M:%S] [%l] %n: %v");说明:
写入日志文件:
auto file_logger = spdlog::basic_logger_mt("file_logger", "app.log");使用 basic_logger_mt 创建多线程安全的日志器,“mt” 表示 multi-threaded。
在高并发或高频日志场景下,同步日志可能成为性能瓶颈。spdlog 支持异步日志模式,将日志写入操作放入后台线程处理。
启用异步日志:
spdlog::init_thread_pool(8192, 1); // 队列大小 8192,1 个后台线程异步模式显著降低主线程阻塞时间,适合对性能要求高的服务程序。
spdlog 支持多种日志级别,按严重程度从低到高:
可设置全局或特定记录器的最低日志级别:
spdlog::set_level(spdlog::level::info); // 只显示 info 及以上级别在发布版本中建议设为 warn 或 error,减少日志开销。
对于大型项目,建议创建多个命名记录器,便于模块化管理。
auto net_logger = spdlog::stdout_color_mt("network");通过名称获取已有记录器:
auto logger = spdlog::get("network");基本上就这些。spdlog 使用简单、性能出色,配合异步机制和灵活配置,非常适合 C++ 项目的日志需求。合理使用能极大提升开发效率和系统可观测性。
以上就是C++如何使用spdlog库记录日志_C++高性能日志记录与spdlog使用的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号