C++高性能日志库spdlog实战

news/2025/1/12 3:36:56/

spdlog库介绍及使用方法

spdlog 是一个由Gabriel Melman开发的高速、轻量级的C++日志库,旨在提供简单易用的日志记录功能,同时保持高性能。它支持多种日志目标,包括控制台、文件、轮转文件等,允许自定义日志过滤和动态改变日志级别。该库的设计使其在多线程环境中也能安全使用,适合高负载的日志记录场景。

安装spdlog
  1. 通过CMake FetchContent(推荐):

    cmake复制

    cmake_minimum_required(VERSION 3.14)
    project(MyApp)
    set(CMAKE_CXX_STANDARD 17)
    include(FetchContent)
    FetchContent_Declare(spdlogGIT_REPOSITORY https://github.com/gabime/spdlog.gitGIT_TAG        v1.11.0
    )
    FetchContent_MakeAvailable(spdlog)
  2. 手动下载

    • spdlog GitHubicon-default.png?t=O83Ahttps://github.com/gabime/spdlog 下载最新版本。

    • include 目录复制到项目中,并在 CMakeLists.txt 中添加相应的包含路径。

基本使用示例

以下是如何在控制台打印日志的简单示例:

cpp复制

#include <spdlog/spdlog.h>int main() {spdlog::info("欢迎使用spdlog!");  // 输出信息spdlog::error("这是一个错误消息!");  // 输出错误return 0;
}
文件日志记录

要将日志记录到文件,可以使用 basic_logger_mt

cpp复制

#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>int main() {try {auto logger = spdlog::basic_logger_mt("basic_logger", "logs/basic-log.txt");logger->info("这是一个信息日志");logger->error("这是一个错误日志");} catch (const spdlog::spdlog_ex& ex) {std::cout << "日志初始化失败: " << ex.what() << std::endl;}return 0;
}
轮转日志记录

对于需要定期备份的日志文件,可以使用 rotating_logger_mt

cpp复制

#include <spdlog/sinks/rotating_file_sink.h>int main() {auto max_size = 1024 * 1024 * 5; // 5 MBauto max_files = 3; // 最多保留3个文件auto logger = spdlog::rotating_logger_mt("rotating_logger", "logs/rotating.txt", max_size, max_files);logger->info("这是一个轮转日志示例");return 0;
}

项目实战

#ifndef LOG_H
#define LOG_H#include <spdlog/logger.h>
#include <spdlog/sinks/rotating_file_sink.h>
#include <sodlog/spdlog.h>class Log
{
public:static std::shared_ptr<spdlog::logger> getLog(){static Log log;return spdlog::get("basic_logger");}private:Log(){auto max_size = 1048576 * 500;auto max_files = 3;auto logger = spdlog::rotating_logger_mt("basic_logger", "log/rotating.txt", max_size, max_files);logger->setpattern("[%n][%Y-%m-%d %H:%M:%S.%e] [%l] [%t] %v");}
}#endif

使用示例

#include "log.h"int a = 1;
Log::getLog()->info("hahahahha : {}", a);

高级配置

spdlog还支持异步日志记录和多种输出目标,可以根据项目需求进行配置。你可以设置日志格式、日志级别等,具体方法可以参考官方文档。

总结

spdlog是一个功能强大且易于使用的C++日志库,适合各种项目开发需求。通过简单的配置和代码,你可以轻松实现高效的日志记录功能,提升项目的可维护性和调试效率。

参考:

C++高性能日志库spdlog使用指南-CSDN博客


http://www.ppmy.cn/news/1562394.html

相关文章

龙蜥Linux系统部署docker21.1.3版本

龙蜥系统配置docker环境 更新yum源 更新软件源中的包。 yum update安装底层工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云仓库 # 添加阿里云的docker镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/c…

美国大学的计算机科学专业排名

美国的计算机科学专业在全球范围内享有盛誉&#xff0c;许多大学在该领域具有卓越的教学和研究实力。以下是根据最新的排名和信息整理的美国计算机科学专业顶尖大学列表&#xff1a; 2025年 U.S. News 美国本科计算机科学专业排名&#xff1a; 斯坦福大学&#xff08;Stanfor…

【华为云开发者学堂】基于华为云 CodeArts CCE 开发微服务电商平台

实验目的 通过完成本实验&#xff0c;在 CodeArts 平台完成基于微服务的应用开发&#xff0c;构建和部署。 ● 理解微服务应用架构和微服务模块组件 ● 掌握 CCE 平台创建基于公共镜像的应用的操作 ● 掌握 CodeArts 平台编译构建微服务应用的操作 ● 掌握 CodeArts 平台部署微…

加速科技荣获“浙江省企业研究院”认定

近日&#xff0c;浙江省经济和信息化厅公布“2024年认定&#xff08;备案&#xff09;省级企业研发机构名单”。经过多轮严格评审和公示&#xff0c;加速科技荣获“省企业研究院”认定。这是加速科技继获国家级专精特新“小巨人”企业认定荣誉后的又一里程碑。 “浙江省企业研究…

C#语言的数据结构

C#语言的数据结构探讨 数据结构是计算机科学中一种用于组织、存储和管理数据的方式。有效地使用数据结构能使算法更加高效&#xff0c;并提高程序的性能。在C#语言中&#xff0c;我们可以构建和使用多种数据结构&#xff0c;以满足不同的需求。本文将介绍C#中的常用数据结构&a…

第30天:PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计

#知识点&#xff1a; 1、安全开发-原生PHP-开发组件集合 2、安全开发-原生PHP-模版引擎渲染 3、安全开发-原生PHP-第三方编辑器 1、模版引擎 在开始介绍Smarty之前先了解一下模板引擎&#xff0c;模板引擎是为了让前端界(html)与程序代码(php)分离而产生的一种解决方案&#x…

青少年编程与数学 02-006 前端开发框架VUE 16课题、组件基础

青少年编程与数学 02-006 前端开发框架VUE 16课题、组件基础 一、定义一个组件二、使用组件三、传递 props四、监听事件五、通过插槽来分配内容六、动态组件七、DOM 内模板解析注意事项1、大小写区分2、闭合标签3、元素位置限制 课题摘要:本文介绍了Vue.js中的组件基础&#xf…

深圳跨境电商建站外贸电商建站哪家好?

深圳作为中国跨境电商的重要枢纽之一&#xff0c;吸引了大量电商企业与建站公司。在这个竞争激烈的市场中&#xff0c;如何选择一家合适的建站公司&#xff0c;成为外贸电商成功的关键之一。今天&#xff0c;我们将为你揭示深圳跨境电商建站的优秀公司&#xff0c;并探讨它们如…