国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】開源:跨平臺輕量日志庫easyloggingpp

這篇具有很好參考價值的文章主要介紹了【C++】開源:跨平臺輕量日志庫easyloggingpp。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??★,°:.☆( ̄▽ ̄)/$:.°★ ??
這篇文章主要介紹跨平臺輕量日志庫easyloggingpp。
無專精則不能成,無涉獵則不能通。?!簡⒊?/font>
歡迎來到我的博客,一起學習,共同進步。
喜歡的朋友可以關注一下,下次更新不迷路??

??1. 項目介紹

項目Github地址:https://github.com/abumq/easyloggingpp

Easylogging++ 是一個輕量級、高性能的 C++ 日志庫,旨在提供簡單易用的日志記錄功能。以下是 Easylogging++ 的一些特點和功能:

1.簡單易用:Easylogging++ 提供了簡潔的 API,使得添加日志記錄功能變得非常容易。只需包含頭文件并使用簡單的宏即可進行日志記錄,無需復雜的配置和初始化過程。

2.高性能:Easylogging++ 被設計為高性能的日志庫,對于頻繁的日志記錄操作也有很好的性能表現(xiàn)。它采用了異步日志記錄機制,將日志寫入緩沖區(qū),并在適當?shù)臅r機進行批量寫入,以提高性能。

3.靈活的日志配置:Easylogging++ 具有靈活的日志配置選項,可以根據(jù)需求進行自定義。你可以定義不同的日志級別,選擇日志記錄的目標(文件、終端等),設置日志格式等??梢酝ㄟ^配置文件或代碼進行配置。

4.多線程支持:Easylogging++ 對多線程環(huán)境有良好的支持。它使用線程安全的方式處理日志記錄,確保在多線程環(huán)境下的正確性和一致性。

5.跨平臺:Easylogging++ 可以在多個平臺上運行,包括 Windows、Linux、Mac等。它不依賴于任何特定的操作系統(tǒng)功能,具有很好的可移植性。

6.支持附加數(shù)據(jù):除了記錄文本日志消息外,Easylogging++ 還允許你附加其他數(shù)據(jù),如時間戳、線程ID等,以便更詳細地追蹤和分析日志。

7.豐富的功能:Easylogging++ 提供了許多額外的功能,如日志滾動(按時間或文件大小自動分割日志文件)、日志過濾、標簽支持等,以滿足不同場景下的需求。

??2. 安裝運行

easyloggingpp日志庫只需要在項目中包含頭文件easylogging++.h和實現(xiàn)easylogging++.cc,即可實現(xiàn)豐富的日志打印功能。

最簡日志打印示例:

#include "easylogging++.h"

INITIALIZE_EASYLOGGINGPP    // 初始化宏,有且只能使用一次

int main(int argc, char* argv[]) {
   LOG(INFO) << "My first info log using default logger";
   return 0;
}

我們知道,簡單的日志打印有Fatal Error Warn Info Debug5種等級,easylogging支持對日志等級和格式進行配置化,通??赏ㄟ^配置文件進行管理,一個配置示例如下:

* GLOBAL:
   FORMAT               =  "%datetime %msg"
   FILENAME             =  "/tmp/logs/my.log"
   ENABLED              =  true
   TO_FILE              =  true
   TO_STANDARD_OUTPUT   =  true
   SUBSECOND_PRECISION  =  6
   PERFORMANCE_TRACKING =  true
   MAX_LOG_FILE_SIZE    =  2097152 ## 2MB - Comment starts with two hashes (##)
   LOG_FLUSH_THRESHOLD  =  100 ## Flush after every 100 logs
* DEBUG:
   FORMAT               = "%datetime{%d/%M} %func %msg"

另外,除了正常的日志輸出外,還提供了條件寫日志,每執(zhí)行n次寫日志,寫n次日志等功能。但一般最常用的就是LOG(LEVEL)輸出對應等級的日志。

示例如下:

# 簡單打印
LOG(INFO) << "Here is very simple example.";  
# 條件日志
LOG_IF(1 == 1, INFO) << "1 is equal to 1";  
# 偶然日志(配合for循環(huán))
# 每n次記錄一次
LOG_EVERY_N(20, INFO) << "LOG_EVERY_N i = ";
# 當計數(shù)達到n次之后,才開始記錄日志 
LOG_AFTER_N(6, INFO) << "LOG_AFTER_N i = ";
# 當記錄次數(shù)達到n次之后,就不再記錄 
LOG_N_TIMES(1, INFO) << "LOG_N_TIMES i = ";

該項目也在sample目錄內(nèi)提供了多平臺、多環(huán)境的應用示例,可參考。

??3. 源碼分析

源碼也就是.h和.cc兩個文件,一個單頭文件的庫。

easylogging++.h

// 首先是很多平臺、編譯器的預判斷,可以理解為一些開關
// 然后引用相關頭文件
// 預先聲明namespace和class
// Forward declarations
namespace el {
class Logger;
class LogMessage;
class PerformanceTrackingData;
class Loggers;
class Helpers;
template <typename T> class Callback;
class LogDispatchCallback;
class PerformanceTrackingCallback;
class LoggerRegistrationCallback;
class LogDispatchData;
namespace base {
class Storage;
class RegisteredLoggers;
class PerformanceTracker;
class MessageBuilder;
class Writer;
class PErrorWriter;
class LogDispatcher;
class DefaultLogBuilder;
class DefaultLogDispatchCallback;
#if ELPP_ASYNC_LOGGING
class AsyncLogDispatchCallback;
class AsyncDispatchWorker;
#endif // ELPP_ASYNC_LOGGING
class DefaultPerformanceTrackingCallback;
}  // namespace base
}  // namespace el

easylogging++.cc

// 默認的日志保存路徑
//---------------- DEFAULT LOG FILE -----------------------
#if defined(ELPP_NO_DEFAULT_LOG_FILE)
#  if ELPP_OS_UNIX
static const char* kDefaultLogFile                         =      "/dev/null";
#  elif ELPP_OS_WINDOWS
static const char* kDefaultLogFile                         =      "nul";
#  endif  // ELPP_OS_UNIX
#elif defined(ELPP_DEFAULT_LOG_FILE)
static const char* kDefaultLogFile                         =      ELPP_DEFAULT_LOG_FILE;
#else
static const char* kDefaultLogFile                         =      "myeasylog.log";
#endif // defined(ELPP_NO_DEFAULT_LOG_FILE)


#if !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG)
static const char* kDefaultLogFileParam                    =      "--default-log-file";
#endif  // !defined(ELPP_DISABLE_LOG_FILE_FROM_ARG)
#if defined(ELPP_LOGGING_FLAGS_FROM_ARG)
static const char* kLoggingFlagsParam                      =      "--logging-flags";
#endif  // defined(ELPP_LOGGING_FLAGS_FROM_ARG)
static const char* kValidLoggerIdSymbols                   =
  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._";
static const char* kConfigurationComment                   =      "##";
static const char* kConfigurationLevel                     =      "*";
static const char* kConfigurationLoggerId                  =      "--";
}

【C++】開源:跨平臺輕量日志庫easyloggingpp,# c++開源項目學習,c++,開源,開發(fā)語言

以上。文章來源地址http://www.zghlxwxcb.cn/news/detail-599873.html

到了這里,關于【C++】開源:跨平臺輕量日志庫easyloggingpp的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 一個現(xiàn)代化輕量級的跨平臺Redis桌面客戶端

    大家好,我是 Java陳序員 。 Redis 作為一款高性能的非關系型數(shù)據(jù)庫,可是深受開發(fā)者的喜愛,無論是什么開發(fā),都能看到 Redis 的身影。 今天,給大家介紹一款跨平臺的 Redis 客戶端連接工具,功能強大,界面美觀! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副

    2024年04月08日
    瀏覽(90)
  • Spacedrive:開源跨平臺文件管理 | 開源日報 No.57

    Spacedrive:開源跨平臺文件管理 | 開源日報 No.57

    Stars: 91.2k License: MIT Deno 是一個簡單、現(xiàn)代和安全的 JavaScript 和 TypeScript 運行時,使用 V8 引擎并用 Rust 構(gòu)建。其主要功能包括: 默認情況下具有高度安全性,除非顯式啟用,否則無法訪問文件、網(wǎng)絡或環(huán)境。 提供 Web 平臺功能和 API (如 ES 模塊、Web Workers 和 fetch())。 開箱即用

    2024年02月08日
    瀏覽(94)
  • FFmpeg——開源的開源的跨平臺音視頻處理框架簡介

    FFmpeg——開源的開源的跨平臺音視頻處理框架簡介

    引言: ????????FFmpeg是一個開源的跨平臺音視頻處理框架,可以處理多種音視頻格式。它由Fabrice Bellard于2000年創(chuàng)建,最初是一個只包括解碼器的項目。后來,很多開發(fā)者參與其中,為FFmpeg增加了多種新的功能,例如編碼器、過濾器、muxer、demuxer等等,使它成為了一個完整

    2024年03月23日
    瀏覽(90)
  • CPF C#跨平臺UI框架開源了

    CPF C#跨平臺UI框架開源了

    C#跨平臺UI框架 提供NETStandard2.0和net4的庫,通過Netcore可以跨平臺,支持Windows、Mac、Linux,Net4的可以支持XP。 各個平臺運行效果一致,不依賴系統(tǒng)控件。 支持窗體,控件任意透明,支持異形窗體,支持SVG圖標顯示。 支持動畫,數(shù)據(jù)綁定,Mvvm模式,CSS等,簡化依賴屬性,數(shù)據(jù)綁

    2024年02月05日
    瀏覽(92)
  • Unity下實現(xiàn)跨平臺的RTMP推流|輕量級RTSP服務|RTMP播放|RTSP播放低延遲解決方案

    Unity下實現(xiàn)跨平臺的RTMP推流|輕量級RTSP服務|RTMP播放|RTSP播放低延遲解決方案

    2018年,我們開始在原生RTSP|RTMP直播播放器的基礎上,對接了Unity環(huán)境下的低延遲播放,毫秒級延遲,發(fā)布后,就得到了業(yè)內(nèi)一致的認可。然后我們覆蓋了Windows、Android、iOS、Linux的RTMP推送、輕量級RTSP服務和RTSP|RTMP播放。 目前看,Unity環(huán)境下,我們在行業(yè)內(nèi)的延遲幾乎是最低的

    2024年01月22日
    瀏覽(22)
  • .NET開源、跨平臺的本地日記APP - SwashbucklerDiary

    .NET開源、跨平臺的本地日記APP - SwashbucklerDiary

    今天給大家推薦一個.NET開源、跨平臺的本地日記APP:SwashbucklerDiary「 俠客日記 」。 每個人的心底都有一個俠客,如影隨風,陪你看過一路的風景,記得你所有的精彩。 MAUI Blazor Hybrid Masa Blazor SqlSugar Serilog .NET 多平臺應用 UI (.NET MAUI) 是一個跨平臺框架,用于使用 C# 和 XAML 創(chuàng)

    2024年02月08日
    瀏覽(122)
  • 開源的跨平臺的音視頻處理工具FFmpeg

    FFmpeg是一個開源的跨平臺的音視頻處理工具,可以對音頻、視頻進行轉(zhuǎn)碼、裁剪、調(diào)節(jié)音量、添加水印等操作。 廣泛的格式支持。 FFmpeg能夠解碼、編碼、轉(zhuǎn)碼、復用、分離、流式傳輸、過濾和播放幾乎人類和機器所創(chuàng)造的任何內(nèi)容。它支持最古老且晦澀難懂的格式,也支持

    2024年02月15日
    瀏覽(88)
  • DBeaver:開源、跨平臺、強大的數(shù)據(jù)庫管理工具

    DBeaver:開源、跨平臺、強大的數(shù)據(jù)庫管理工具

    1.DBeaver 是什么 DBeaver 是一個流行的開源數(shù)據(jù)庫客戶端,它可以用于連接和管理多種不同類型的數(shù)據(jù)庫系統(tǒng),包括 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等等。 DBeaver 提供了一種直觀的用戶界面,允許用戶執(zhí)行各種數(shù)據(jù)庫操作,如查詢、修改、備份等等,同時也提供了一些高

    2024年01月25日
    瀏覽(28)
  • 一個基于.NET Core開源、跨平臺的倉儲管理系統(tǒng)

    一個基于.NET Core開源、跨平臺的倉儲管理系統(tǒng)

    今天給大家推薦一個基于.NET Core開源、跨平臺的倉儲管理系統(tǒng),數(shù)據(jù)庫支持MSSQL/MySQL:ZEQP.WMS。 倉儲管理系統(tǒng)(Warehouse Management System,WMS)是一種用于管理和控制倉庫操作的軟件系統(tǒng),它可以幫助企業(yè)實現(xiàn)對倉庫內(nèi)物品的跟蹤、存儲、揀選、包裝和發(fā)運等全過程管理,提高倉

    2024年02月21日
    瀏覽(912)
  • 跨平臺的桌面應用程序開發(fā)框架Electron | 開源日報 0906

    跨平臺的桌面應用程序開發(fā)框架Electron | 開源日報 0906

    Stars: 109.3k License: MIT Electron 是一個基于 Node.js 和 Chromium 的開源框架,允許使用 JavaScript、HTML 和 CSS 編寫跨平臺的桌面應用程序。它被 Atom 編輯器等眾多應用程序所采用。該項目具有以下核心優(yōu)勢: 跨平臺:Electron 提供了 macOS、Windows 和 Linux 三個主要操作系統(tǒng)的二進制文件。

    2024年02月09日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包