• spdlog简单介绍和使用


    spdlog 是一个C++的快速、可扩展的日志库,具有高性能和友好的接口。它支持多种日志输出目标,如控制台、文件、远程服务器等,并具有强大的日志格式化和异步日志记录功能。

    以下是对spdlog的简单介绍和使用示例:

    安装 spdlog

    你可以使用包管理工具(如CMake、vcpkg、Conan等)来安装spdlog,或者从GitHub仓库获取源代码进行构建。这里以CMake为例:

    1. 下载spdlog源代码或使用git克隆官方仓库:

      git clone https://github.com/gabime/spdlog.git
    2. 在你的CMake项目中包含spdlog:

      add_subdirectory(path_to_spdlog_source_directory)
    3. 在你的CMakeLists.txt中链接spdlog:

      target_link_libraries(your_project_name PRIVATE spdlog::spdlog)

    使用 spdlog

    使用spdlog非常简单,以下是一个基本的示例:

    1. #include <spdlog/spdlog.h>
    2. int main() {
    3. // 初始化spdlog,使用stdout作为输出目标
    4. auto console = spdlog::stdout_logger_mt("console");
    5. // 记录日志消息
    6. console->info("This is an informational message.");
    7. console->error("This is an error message.");
    8. console->critical("This is a critical message.");
    9. spdlog::info("Welcome to spdlog!");
    10. return 0;
    11. }

    在上述示例中,我们首先包含了spdlog头文件,然后创建了一个名为"console"的日志记录器,并将其绑定到stdout(控制台)。接着,我们使用infoerrorcritical方法记录不同级别的日志消息。

    日志级别

    spdlog 支持多种日志级别,包括以下几种:

    • trace: 用于追踪信息。
    • debug: 用于调试信息。
    • info: 用于一般信息。
    • warn: 用于警告信息。
    • error: 用于错误信息。
    • critical: 用于严重错误信息。

    你可以根据需要选择不同的级别来记录日志。默认情况下,spdlog 的日志级别是debug,你可以在初始化日志记录器时指定不同的级别。

    日志格式

    spdlog 允许你自定义日志消息的格式。你可以使用占位符来指定日志消息中的各个部分,例如时间戳、日志级别、消息内容等。默认情况下,spdlog 使用一种简单的格式,但你可以通过设置自定义格式字符串来更改它。以下是一个示例:

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

    这个示例将时间戳、日志级别和消息内容分别用占位符表示。

    spdlog 还支持异步日志记录,可以提高日志记录的性能,特别是在多线程环境中。

    这只是一个spdlog的基本介绍和使用示例。你可以根据需要进一步探索其丰富的功能和配置选项,以满足特定的日志记录需求。

    接下来我们详细介绍一下spdlog库的使用

    创建和初始化日志记录器

    在使用 spdlog 之前,需要创建和初始化一个或多个日志记录器。通常,你会在应用程序的入口处初始化日志记录器。以下是初始化日志记录器的示例:

    1. #include <spdlog/spdlog.h>
    2. int main() {
    3. // 初始化默认日志记录器,使用stdout作为输出目标
    4. spdlog::stdout_logger_mt("console");
    5. // 初始化一个自定义日志记录器,使用文件作为输出目标
    6. auto file_logger = spdlog::basic_logger_mt("file_logger", "my_log.txt");
    7. // 设置日志级别
    8. spdlog::set_level(spdlog::level::debug);
    9. // 更多初始化和设置选项...
    10. // 记录日志消息
    11. spdlog::get("console")->info("This is an informational message.");
    12. spdlog::get("file_logger")->error("This is an error message.");
    13. // 关闭和销毁日志记录器
    14. spdlog::drop("console");
    15. spdlog::drop("file_logger");
    16. return 0;
    17. }

    在上述示例中,我们首先初始化了一个默认的日志记录器("console"),并将其绑定到stdout。然后,我们初始化了一个自定义的日志记录器("file_logger"),并将其绑定到名为"my_log.txt"的文件。我们还设置了日志级别为debug,这意味着它将记录所有级别的日志。

    记录日志消息

    一旦初始化了日志记录器,就可以使用它来记录日志消息。spdlog 支持多种日志级别,包括 tracedebuginfowarnerror 和 critical,你可以根据需要选择不同的级别来记录日志。以下是一些示例:

    1. spdlog::get("console")->trace("This is a trace message.");
    2. spdlog::get("console")->debug("This is a debug message.");
    3. spdlog::get("console")->info("This is an informational message.");
    4. spdlog::get("console")->warn("This is a warning message.");
    5. spdlog::get("console")->error("This is an error message.");
    6. spdlog::get("console")->critical("This is a critical message.");

    自定义日志格式

    spdlog 允许你自定义日志消息的格式。你可以使用占位符来指定日志消息中的各个部分,例如时间戳、日志级别、消息内容等。默认情况下,spdlog 使用一种简单的格式,但你可以通过设置自定义格式字符串来更改它。以下是一个示例:

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

    这个示例将时间戳、日志级别和消息内容分别用占位符表示。

    输出目标

    spdlog 支持多种输出目标,包括控制台、文件、远程服务器等。你可以通过创建不同的日志记录器,并将它们绑定到不同的输出目标来实现多个日志通道。以下是一个输出目标示例:

    auto file_logger = spdlog::basic_logger_mt("file_logger", "my_log.txt");

    此示例将创建一个名为"file_logger"的自定义日志记录器,并将其绑定到名为"my_log.txt"的文件。

    异步日志记录

    spdlog 支持异步日志记录,可以提高日志记录的性能,特别是在多线程环境中。要启用异步日志记录,你可以使用以下方式初始化日志记录器:

    auto async_file_logger = spdlog::basic_logger_st("async_file_logger", "async_log.txt");

    在这个示例中,我们使用了_st后缀,表示启用了异步日志记录。

    spdlog 还提供了许多其他功能和选项,如日志文件的切割、回滚、日志旋转等。你可以根据具体需求进一步探索这些功能。

    spdlog 是一个功能强大而又易于使用的C++日志库,适用于各种应用程序。请参考 spdlog 的官方文档以获取更多详细信息和用法示例:GitHub - gabime/spdlog: Fast C++ logging library.

  • 相关阅读:
    OpenCV4(C++)—— 图像连通域的详细分析
    Ransac算法例程
    树莓派CM4开启I2C与UART串口登录同时serial0映射到ttyS0 & 开启多串口
    如何用WebGPU流畅渲染千万级2D物体:基于光追管线
    从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(七) 开发环境使用轻量级在线文档解决知识分享问题
    SpringDataJPA-@Query
    MySQL 快速入门之 MySQL 5.7.18 zip 文件安装
    无胁科技-TVD每日漏洞情报-2022-10-28
    Qt for Android设置应用图标及名称
    强大的SQL计算利器-SPL
  • 原文地址:https://blog.csdn.net/CHNIM/article/details/134260945