??★,°:.☆( ̄▽ ̄)/$:.°★ ??
這篇文章主要介紹spdlog日志庫配置使用。
無專精則不能成,無涉獵則不能通?!簡⒊?/font>
歡迎來到我的博客,一起學(xué)習(xí),共同進(jìn)步。
喜歡的朋友可以關(guān)注一下,下次更新不迷路??
??1. 項(xiàng)目介紹
項(xiàng)目Github地址:https://github.com/gabime/spdlog
Spdlog
是一個(gè)高性能的 C++ 日志庫,具有簡單易用的 API 和靈活的配置選項(xiàng)。它被設(shè)計(jì)成易于集成到現(xiàn)有項(xiàng)目中,并提供了多種日志記錄器(loggers
)、格式化選項(xiàng)和多線程安全的操作。
下面是一些關(guān)于 Spdlog
的主要特點(diǎn)和功能:
1.簡單易用:Spdlog 提供簡潔的 API,使得日志記錄變得非常容易。你只需要包含頭文件,并使用簡單的方法調(diào)用即可輸出日志。
2.多種日志目標(biāo):Spdlog 支持多種日志目標(biāo),可以將日志記錄到控制臺、文件、網(wǎng)絡(luò)等不同的位置。你可以根據(jù)需求選擇適合的日志目標(biāo)。
3.靈活的格式化:Spdlog 具有靈活的日志格式化選項(xiàng),可以自定義日志的輸出格式。你可以按照自己的需求定義日期、時(shí)間、日志級別和其他附加信息的格式。
4.多線程支持:Spdlog 在設(shè)計(jì)上考慮到多線程環(huán)境下的安全性,可以在多個(gè)線程中同時(shí)記錄日志,而無需擔(dān)心競爭條件。
5.高性能:Spdlog 使用異步日志記錄方式和高效的寫入策略,以提供卓越的性能。它可以處理大量的日志消息而不會對應(yīng)用程序的性能產(chǎn)生顯著影響。
6.支持不同的日志級別:Spdlog 提供了不同的日志級別(如 DEBUG、INFO、WARNING、ERROR 等),可以根據(jù)需求選擇適當(dāng)?shù)募墑e進(jìn)行日志記錄,以幫助你更好地控制日志輸出。
7.集成第三方庫:Spdlog 可以與其他流行的 C++ 庫和框架集成,如 fmtlib、Google Protocol Buffers (protobuf) 等。
8.跨平臺支持:Spdlog 支持在多個(gè)操作系統(tǒng)和編譯器上運(yùn)行,包括 Windows、Linux 和 macOS。它可以無縫地在不同平臺上提供一致的 API 和功能。
??2. 環(huán)境配置
下面進(jìn)行環(huán)境配置:
# 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() {
// 設(shè)置日志級別為 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;
}
設(shè)置兩個(gè)logger,分別輸出在終端和日志文件中:
#include <iostream>
#include <spdlog/spdlog.h>
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"
int main()
{
// 創(chuàng)建一個(gè)名為 "logger" 的logger
auto console = spdlog::stdout_color_mt("logger");
// 創(chuàng)建一個(gè)名為 "logger_2" 的logger
auto file = spdlog::basic_logger_mt("logger_2", "log1.txt");
// 設(shè)置日志級別為 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;
}
同時(shí)輸出到終端和文件示例:
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
int main()
{
// 創(chuàng)建控制臺輸出日志記錄器
auto consoleSink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto consoleLogger = std::make_shared<spdlog::logger>("console", consoleSink);
// 創(chuàng)建文件輸出日志記錄器
auto fileSink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs2.txt");
auto fileLogger = std::make_shared<spdlog::logger>("file", fileSink);
// 將控制臺和文件日志記錄器添加到復(fù)合日志記錄器中
spdlog::sinks_init_list sinks = { consoleSink, fileSink };
auto multiLogger = std::make_shared<spdlog::logger>("multi_logger", sinks.begin(), sinks.end());
// 設(shè)置默認(rèn)日志記錄器為復(fù)合日志記錄器
spdlog::set_default_logger(multiLogger);
// 設(shè)置日志級別
spdlog::set_level(spdlog::level::debug);
// 設(shè)置日志消息的格式
// 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");
// 刷新并關(guān)閉所有日志記錄器
spdlog::drop_all();
return 0;
}
文章來源:http://www.zghlxwxcb.cn/news/detail-646963.html
以上。文章來源地址http://www.zghlxwxcb.cn/news/detail-646963.html
到了這里,關(guān)于【C++】開源:spdlog跨平臺日志庫配置使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!