当前位置: 首页 > news >正文

【C++】开源:spdlog跨平台日志库配置使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍spdlog日志库配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

项目Github地址:https://github.com/gabime/spdlog

Spdlog 是一个高性能的 C++ 日志库,具有简单易用的 API 和灵活的配置选项。它被设计成易于集成到现有项目中,并提供了多种日志记录器(loggers)、格式化选项和多线程安全的操作。

下面是一些关于 Spdlog 的主要特点和功能:

1.简单易用:Spdlog 提供简洁的 API,使得日志记录变得非常容易。你只需要包含头文件,并使用简单的方法调用即可输出日志。

2.多种日志目标:Spdlog 支持多种日志目标,可以将日志记录到控制台、文件、网络等不同的位置。你可以根据需求选择适合的日志目标。

3.灵活的格式化:Spdlog 具有灵活的日志格式化选项,可以自定义日志的输出格式。你可以按照自己的需求定义日期、时间、日志级别和其他附加信息的格式。

4.多线程支持:Spdlog 在设计上考虑到多线程环境下的安全性,可以在多个线程中同时记录日志,而无需担心竞争条件。

5.高性能:Spdlog 使用异步日志记录方式和高效的写入策略,以提供卓越的性能。它可以处理大量的日志消息而不会对应用程序的性能产生显著影响。

6.支持不同的日志级别:Spdlog 提供了不同的日志级别(如 DEBUG、INFO、WARNING、ERROR 等),可以根据需求选择适当的级别进行日志记录,以帮助你更好地控制日志输出。

7.集成第三方库:Spdlog 可以与其他流行的 C++ 库和框架集成,如 fmtlib、Google Protocol Buffers (protobuf) 等。

8.跨平台支持:Spdlog 支持在多个操作系统和编译器上运行,包括 Windows、Linux 和 macOS。它可以无缝地在不同平台上提供一致的 API 和功能。

😊2. 环境配置

下面进行环境配置:

# apt安装
sudo apt install libspdlog-dev
# 编译
g++ -o main main.cpp -lspdlog && ./main# cmake配置
cmake_minimum_required(VERSION 3.0)
project(YourProject)find_package(spdlog REQUIRED)add_executable(YourExecutable your_source_files.cpp)
target_link_libraries(YourExecutable PRIVATE spdlog::spdlog)

😆3. 使用说明

下面进行使用分析:

最简示例:

#include <spdlog/spdlog.h>int main() {// 设置日志级别为 DEBUGspdlog::set_level(spdlog::level::debug);// 输出不同级别的日志spdlog::debug("This is a debug message");spdlog::info("This is an info message");spdlog::warn("This is a warning message");spdlog::error("This is an error message");return 0;
}

设置两个logger,分别输出在终端和日志文件中:

#include <iostream>
#include <spdlog/spdlog.h>
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"int main()
{std::cout << "spdlog start" << std::endl;// 创建一个名为 "logger" 的loggerauto console = spdlog::stdout_color_mt("logger");// 创建一个名为 "logger_2" 的loggerauto file = spdlog::basic_logger_mt("logger_2", "logs/basic-log.txt");// 设置日志级别为 infoconsole->set_level(spdlog::level::debug);file->set_level(spdlog::level::info);// 输出不同级别的日志console->debug("This is debug message");console->info("Welcome to spdlog!");console->error("Some error message with arg{}", 1);file->info("Welcome to spdlog, from a file!");file->error("Some error message with arg{}", 2);std::cout << "spdlog end" << std::endl;return 0;
}

在这里插入图片描述

以上。

http://www.lryc.cn/news/122900.html

相关文章:

  • [Azkaban] No active executors found
  • 无涯教程-Perl - recv函数
  • 算法练习-搜索 相关
  • PyQt5控件布局管理
  • TypeScript 一分钟让你理解泛型是什么
  • PatchMatchNet 训练dtu数据集、训练曲线查看、实操教程图图文详解、
  • 怎样制定测试计划和设计测试用例?
  • 教你如何为博客网站申请阿里云的免费域名HTTPS证书
  • 在线Word怎么转换成PDF?Word无法转换成PDF文档原因分析
  • 计算机网络:网络通信相关概念入门
  • Spring-2-透彻理解Spring 注解方式创建Bean--IOC
  • LeetCode150道面试经典题--单词规律(简单)
  • uniapp把城市换成26个字母和城市排序
  • Flv格式视频怎么转MP4?视频格式转换方法分享
  • Java类与对象详解(3)
  • PMP备考指南来啦!
  • 计算机视觉中的特征检测和描述
  • 【docker】 运行bytetrack 构建映像失败 使用docker删除之前构建的映像
  • 视图矩阵推导
  • Linux | 隐藏终端并在指定路径下执行命令
  • JavaSE_2.1——数组之Arrays工具类
  • yolov5、YOLOv7、YOLOv8改进:注意力机制CA
  • ​LeetCode解法汇总617. 合并二叉树
  • 记vite打包vue项目内存溢出问题解决
  • 【SCI征稿】2区SCI,大数据与遥感技术、图像处理技术、物联网(IoT)技术、传感器网络的结合研究
  • java_基础语法及用法
  • C# WPF 开源主题 HandyControl 的使用(一)
  • 探索ES高可用:滴滴自研跨数据中心复制技术详解
  • 指针---进阶篇(二)
  • Python实现SSA智能麻雀搜索算法优化循环神经网络分类模型(LSTM分类算法)项目实战