Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C++】开源:spdlog跨平台日志库配置使用

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

作者头像
DevFrank
发布于 2024-07-24 07:44:05
发布于 2024-07-24 07:44:05
76000
代码可运行
举报
运行总次数:0
代码可运行

😏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 支持在多个操作系统和编译器上运行,包括 WindowsLinux 和 macOS。它可以无缝地在不同平台上提供一致的 API 和功能。

😊2. 环境配置

下面进行环境配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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. 使用说明

最简示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <spdlog/spdlog.h>

int main() {
  // 设置日志级别为 DEBUG
  spdlog::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,分别输出在终端和日志文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <spdlog/spdlog.h>
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"

int main()
{
    // 创建一个名为 "logger" 的logger
    auto console = spdlog::stdout_color_mt("logger");

    // 创建一个名为 "logger_2" 的logger
    auto file = spdlog::basic_logger_mt("logger_2", "log1.txt");

    // 设置日志级别为 info
    console->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->debug("This is debug message");
    file->info("Welcome to spdlog, from a file!");
    file->error("Some error message with arg{}", 2);

    return 0;
}

同时输出到终端和文件示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>

int main()
{
    // 创建控制台输出日志记录器
    auto consoleSink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
    auto consoleLogger = std::make_shared<spdlog::logger>("console", consoleSink);

    // 创建文件输出日志记录器
    auto fileSink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs2.txt");
    auto fileLogger = std::make_shared<spdlog::logger>("file", fileSink);

    // 将控制台和文件日志记录器添加到复合日志记录器中
    spdlog::sinks_init_list sinks = { consoleSink, fileSink };
    auto multiLogger = std::make_shared<spdlog::logger>("multi_logger", sinks.begin(), sinks.end());

    // 设置默认日志记录器为复合日志记录器
    spdlog::set_default_logger(multiLogger);

	// 设置日志级别
    spdlog::set_level(spdlog::level::debug);

    // 设置日志消息的格式
    // spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v");

    // 记录日志消息
    spdlog::info("Hello, spdlog!");
    spdlog::error("An error occurred.");

    spdlog::debug("Debug message");
    spdlog::info("Info message");
    spdlog::warn("Warning message");
    spdlog::error("Error message");

    // 刷新并关闭所有日志记录器
    spdlog::drop_all();

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spdlog日志库的使用
今天介绍一个开源日志库,只需要将include下面的文件拷贝到自己的代码目录下,就可以在项目中使用。使用效果如下图所示:
CPP开发前沿
2021/12/16
3.1K0
spdlog日志库的使用
c++日志库实战——spdlog,是不是感觉log4cxx有点笨重,不妨试一试spdlog
在最近新入职同事的推荐下,作者在一个小工具中学习和使用了spdlog,且已发布到线上运行,以下是学习记录。
全栈程序员站长
2022/09/07
1.8K0
c++日志库实战——spdlog,是不是感觉log4cxx有点笨重,不妨试一试spdlog
spdlog学习笔记
说明:所有内容翻译自spdlog的wiki,受英语水平所限,有所错误或失真在所难免,如果您有更好的建议,请在博文下留言。
全栈程序员站长
2022/09/10
1.6K0
[C++]-日志记录库SPDLog简介[通俗易懂]
spdlog是基于C++11实现的一款纯头文件的日志管理库(git地址:https://github.com/gabime/spdlog,API说明:https://spdlog.docsforge.com/v1.x/1.quickstart/):
全栈程序员站长
2022/09/10
8.8K1
开源库推荐——spdlog
在软件开发领域,日志记录是一项至关重要的工作。它不仅是程序运行情况的实时记录者,更是故障排查和系统优化的关键依据。然而,随着项目规模的扩大和复杂性的增加,传统的日志管理方式已经难以满足开发者的需求。这时候,一个高效、灵活的日志库就显得尤为重要。在众多的日志库中spdlog以其出色的性能和便捷的使用方式,赢得了广大开发者的青睐。
程序员的园
2024/07/18
2600
开源库推荐——spdlog
spdlog 日志库学习,简易封装
spdlog wiki:https://github.com/gabime/spdlog/wiki
全栈程序员站长
2022/09/10
1.4K0
spdlog使用示例「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152308.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/10
1.8K0
c++日志工具推荐--spdlog
spdlog日志是纯头文件,使用起来比较方便。使用时只需要简单的初始化即可,这里对其初始化做了一个简单的封装,这样使用起来更加方便。 输出到console与输出到文件的级别可以分开设置,并支持动态设置。
fensnote
2021/08/26
9540
Cpp(十二) log日志基本使用spdlog
Cpp日志spdlog #1 环境 macOS 10.15.5 spdlog #2 需求分析 日志按等级分到不同的文件 日志按时间分割 #3 使用 #3.1 工程结构 . ├── CMakeLists.txt ├── cmake-build-debug ├── include │ └── spdlog ├── log.hpp └── main.cpp #3.2 CMakeLists.txt cmake_minimum_required(VERSION 3.17) project(my_spdlog)
Autooooooo
2021/03/02
4.1K0
Cpp(十二) log日志基本使用spdlog
Log:Spdlog初探(1)
Github地址:Github地址 官网介绍:Very fast, header-only/compiled, C++ logging library。轻量,仅有头文件/编译,C++日志库。 注意:Spdlog包含了C++11特性,需使用支持C++11特性的编译器。
全栈程序员站长
2022/09/10
1.1K0
Log:Spdlog初探(1)
spdlog使用
参考1:https://www.cnblogs.com/LuckCoder/p/11171609.html
全栈程序员站长
2022/09/10
9490
spdlog 个人封装,欢迎使用,共同探讨[通俗易懂]
#ifndef _MY_LOG_HPP_ #define _MY_LOG_HPP_
全栈程序员站长
2022/09/10
1.6K0
log库spdlog简介及使用[通俗易懂]
spdlog是一个开源的、快速的、仅有头文件的C++11 日志库,code地址在 https://github.com/gabime/spdlog ,目前最新的发布版本为0.14.0。它提供了向流、标准输出、文件、系统日志、调试器等目标输出日志的能力。它支持的平台包括Windows、Linux、Mac、Android。
全栈程序员站长
2022/09/10
4.3K0
log库spdlog简介及使用[通俗易懂]
spdLog的使用
只包含头文件 (spdlog/spdlog.h —> spdlog , spdlog/fmt/bundled/format.h —> pattern_formatter)
全栈程序员站长
2022/09/10
2K0
高频交易中常用的日志库——Quill
日志作为软件中一个非常重要的模块,开发者总是希望记录的信息越全越好,记录日志使用的性能越少越好。所以出现了很多优秀的日志库,比如spdlog、log4cpp、log4cplus等。
程序员的园
2025/03/10
2290
高频交易中常用的日志库——Quill
spdlog linux编译出错,spdlog「建议收藏」
// console logger (multithreaded and with color)
全栈程序员站长
2022/09/10
1.7K0
sinkable_paas容器
滚动式日志生成,当一个文件达到约定大小后将创建一个新的log文件继续写入,知道日志文件数目达到用户指定的最大数量。log文件大小和可以在spdlog::rotating_logger_mt构造函数中配置
全栈程序员站长
2022/11/01
8770
【C++ spdlog】C++ 日志库 spdlog 使用
参考: https://github.com/gabime/spdlog https://www.cnblogs.com/oucsheep/p/8426548.html https://blog.csdn.net/yanxiaobugyunsan/article/details/79088533
全栈程序员站长
2022/09/10
1.7K0
【C++ spdlog】C++ 日志库 spdlog 使用
日志管理的重要性及实践
日志管理是任何IT系统管理的重要组成部分。它可以帮助我们理解系统的运行状态,发现并解决问题,以及进行安全审计。对于C++开发的系统而言,良好的日志管理实践同样至关重要。本文将详细介绍日志管理的具体步骤、注意事项,并结合C++实例,推荐一些查看日志的好用工具。
码事漫谈
2025/01/18
1230
日志管理的重要性及实践
Windows10中使用VS2022和Cmake编译构建C++开源日志库-spdlog
Java中有很多日志库:java.util.logging、Log4j、Logback、Log4j2、slf4j、common-logging。C++的日志库相对来说就比较少了,比如说glog、log4cpp、spdllog等,目前个人感觉比较好用的C++开源日志库当属于spdlog了,跨平台,支持cmake编译,在维护中。 具体可以参考github上面的示例:https://github.com/gabime/spdlog 另外spdlog支持两种使用方式:一种是将源代码目录下的include头文件直接添加到自己的项目中使用;另一种使用cmake编译构建出lib静态库或者dll动态库之后以静态和动态链接方式使用。
ccf19881030
2022/11/21
3.4K0
Windows10中使用VS2022和Cmake编译构建C++开源日志库-spdlog
相关推荐
spdlog日志库的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档