最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?plog日志使用方法介紹

 更新時(shí)間:2022年10月09日 09:06:38   作者:cpp_learners  
最近突然心血來潮,想學(xué)一下日志方面的操作。在網(wǎng)上找了很多日志相關(guān)的技術(shù),最終還是決定使用plog,小巧,快速,跨平臺(tái)

一、下載plog

下載鏈接:https://github.com/SergiusTheBest/plog/releases

下載后解壓出來,就得到了我們需要的頭文件了

二、在VS中搭建plog編譯環(huán)境

在vs中新建項(xiàng)目,根據(jù)以下圖片步驟將plog頭文件包含到項(xiàng)目中去

將include文件夾拷貝到項(xiàng)目路徑

將頭文件路徑包含進(jìn)來

右鍵項(xiàng)目 - 屬性 - VC++目錄 - 包含目錄

將項(xiàng)目路徑中的include路徑包含進(jìn)來

mian函數(shù)中加入頭文件

#include <plog/Log.h> 
#include <plog/Initializers/RollingFileInitializer.h>

至此,plog的編譯環(huán)境已經(jīng)整好了,可以使用它了。

三、使用plog日志庫(kù)

簡(jiǎn)單用法

使用init函數(shù)進(jìn)行打開文件和初始化

plog::init(plog::debug, "日志.txt");

// 參數(shù)一使用的枚舉:
/*
enum Severity
{
    none = 0,
    fatal = 1,        // 致命錯(cuò)誤
    error = 2,        // 錯(cuò)誤
    warning = 3,    // 警告
    info = 4,        // 通知
    debug = 5,        // 調(diào)試
    verbose = 6
};
*/

參數(shù)一是日志的類型,一般用plog::debug或plog::verbose即可,參數(shù)二是日志路徑和文件名;當(dāng)然還有參數(shù)三和參數(shù)四,將在下面例子講解。

初始化之后,就可以使用宏LOGD或PLOG_DEBUG或PLOG(plog::debug),將日志信息寫入日志文件中了。

LOGD << "日志打印";
LOGD << "日志Debug" << 123 << "test" << 3.1415926;

編譯運(yùn)行,就會(huì)發(fā)現(xiàn)在項(xiàng)目路徑中多出了一個(gè)日志.txt的文件,這個(gè)就是我們這個(gè)項(xiàng)目中的日志文件。

進(jìn)入就可以看到剛剛在代碼中寫入的日志信息了

日志中有時(shí)間信息,還有此日志是什么類型的(圖上的是DEBUG類型),此條日志信息是在那個(gè)函數(shù)中進(jìn)行寫入的(圖上顯示的是main函數(shù),也是正確的),最后是日志信息!

當(dāng)然,也還可以在函數(shù)中使用,例如新建一個(gè)函數(shù),在函數(shù)中寫日志信息

void testLog() {
	LOGD << "testLog()";
}

然后接著調(diào)用此函數(shù)

plog::init(plog::debug, "日志.txt");
LOGD << "日志打印";
LOGD << "日志Debug" << 123 << "test" << 3.1415926;
testLog();
LOGD << "函數(shù)結(jié)束";

編譯運(yùn)行后日志文件

已經(jīng)將日志信息寫入文件中了!

指定日志文件大小和個(gè)數(shù)

// 參數(shù)一:日志類型        參數(shù)二:日志文件名        參數(shù)三:日志文件大小        參數(shù)四:支持多少個(gè)日志文件
plog::init(plog::debug, "Hello.txt", 1024, 5);    // 每個(gè)文件最大1024,最多5個(gè)文件,超過開始覆蓋

1024是指單個(gè)日志文件只能是1024大小左右;5是指該項(xiàng)目只會(huì)有5個(gè)日志文件,如果日志數(shù)據(jù)量大,超過了限制,那么會(huì)對(duì)前面的日志文件進(jìn)行覆蓋。

寫一個(gè)例子,往日志文件中寫入七十條日志,看看是什么效果

int index = 0;
while (index < 70) {
	LOGD << "測(cè)試日志:" << index++;
}

編譯運(yùn)行后

生成了5個(gè)日志文件Hello.1.txt、Hello.2.txt、Hello.3.txt、Hello.4.txt、Hello.txt

根據(jù)日志打印的數(shù)字可以看出,Hello.4.txt是最開始先使用的日志文件,剛開始名字應(yīng)該是Hello.txt才對(duì)的,后來因?yàn)樗拇鎯?chǔ)大小超過了1024,所以plog會(huì)將他的文件名進(jìn)行更改為Hello.1.txt,然后繼續(xù)創(chuàng)建一個(gè)Hello.txt的文件進(jìn)行存儲(chǔ)日志信息;當(dāng)文件大小又超過1024時(shí),會(huì)首先將Hello.1.txt名字更改為Hello.2.txt,然后才會(huì)將Hello.txt更改為Hello.1.txt;然后繼續(xù)創(chuàng)建一個(gè)Hello.txt的文件進(jìn)行存儲(chǔ)日志信息…

依此類推,最終得到上圖效果!

當(dāng)超過五個(gè)日志文件大小存儲(chǔ)時(shí),會(huì)對(duì)前面剛開始寫入的日志信息進(jìn)行覆蓋

可以將上面的index判斷次數(shù)修改為85,編譯運(yùn)行

int index = 0;
while (index < 85) {
	LOGD << "測(cè)試日志:" << index++;
}

之前的 Hello.4.txt 文件已經(jīng)被刪除了,然后被之前的Hello.3.txt給替換掉了,前面的一樣會(huì)往后進(jìn)行替換,最后就可以騰出新的文件Hello.txt進(jìn)行繼續(xù)存儲(chǔ)了!

使用時(shí)間作為文件名

我就比較喜歡這種命名方式了

也就是將當(dāng)天的年月日作為日志的文件名,這樣運(yùn)行程序,每天也只會(huì)生成一個(gè)日志文件,記錄當(dāng)天的日志信息,也方便后期查詢!

#include <string>
#include <time.h>
std::string getCurrentTime(std::string& year, std::string& month, std::string& day, std::string& hour, 	std::string& min, std::string& sec) {
	// 獲取系統(tǒng)時(shí)間 - 年月日時(shí)分秒
	time_t _time;
	struct tm* target_time;
	time(&_time);
	target_time = localtime(&_time);
	year = std::to_string(target_time->tm_year + 1900);
	month = target_time->tm_mon + 1 > 9 ? std::to_string(target_time->tm_mon + 1) : "0" + std::to_string(target_time->tm_mon + 1);
	day = target_time->tm_mday > 9 ? std::to_string(target_time->tm_mday) : "0" + std::to_string(target_time->tm_mday);
	hour = target_time->tm_hour > 9 ? std::to_string(target_time->tm_hour) : "0" + std::to_string(target_time->tm_hour);
	min = target_time->tm_min > 9 ? std::to_string(target_time->tm_min) : "0" + std::to_string(target_time->tm_min);
	sec = target_time->tm_sec > 9 ? std::to_string(target_time->tm_sec) : "0" + std::to_string(target_time->tm_sec);
	return year + month + day + hour + min + sec;
}
int main(void) {
	std::string year, month, day, hour, min, sec;
	getCurrentTime(year, month, day, hour, min, sec);
	std::string logName = year + month + day + ".txt";
	plog::init(plog::verbose, logName.c_str());
	LOGD << "時(shí)間日志名字";
	int index = 0;
	while (index < 85) {
		LOGD << "測(cè)試日志:" << index++;
	}
	return 0;
}	

編譯運(yùn)行

根據(jù)當(dāng)天的日期創(chuàng)建了日志

四、QTCreator使用plog日志庫(kù)

將plog文件夾拷貝到QT項(xiàng)目中去,注意,這里并沒有包含那個(gè)include文件夾

然后右鍵項(xiàng)目,選擇Add Existing Directory…

勾選上plog,點(diǎn)擊確定

這樣plog模塊就添加進(jìn)來了

然后在QT項(xiàng)目中添加頭文件就可以使用了

#include <plog/Log.h>
#include <plog/Initializers/RollingFileInitializer.h>
plog::init(plog::verbose, "test.txt");
LOGD << QString::fromStdString("時(shí)間日志名字");
int index = 0;
while (index < 85) {
    LOGD << QString::fromStdString("測(cè)試日志:") << index++;
}

可以使用!

五、總結(jié)

其實(shí)plog還有很多用高效的用法,在文件夾samples中有案例,有興趣的可以去看看!

到此這篇關(guān)于C++ plog日志使用方法介紹的文章就介紹到這了,更多相關(guān)C++ plog日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++學(xué)習(xí)之構(gòu)造函數(shù)

    c++學(xué)習(xí)之構(gòu)造函數(shù)

    類多么重要我就不多說了,只講講學(xué)習(xí),因?yàn)閭€(gè)人認(rèn)為類的學(xué)習(xí)無論從概念的理解還是實(shí)際代碼的編寫相對(duì)其他C兼容向的代碼都是比較有難度的, 對(duì)于以前學(xué)C 的人來說這才是真正的新概念和內(nèi)容,STL其實(shí)還比較好理解,不就是一個(gè)更大的函數(shù)庫(kù)和代碼可以使用嘛。
    2015-06-06
  • 常用C/C++預(yù)處理指令詳解

    常用C/C++預(yù)處理指令詳解

    預(yù)處理指令提供按條件跳過源文件中的節(jié)、報(bào)告錯(cuò)誤和警告條件,以及描繪源代碼的不同區(qū)域的能力。使用術(shù)語(yǔ)“預(yù)處理指令”只是為了與 C 和 C++ 編程語(yǔ)言保持一致。在 C# 中沒有單獨(dú)的預(yù)處理步驟;預(yù)處理指令按詞法分析階段的一部分處理。
    2014-11-11
  • 基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲

    基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷游戲

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本文將利用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • 在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼

    在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼

    最近的項(xiàng)目在用c處理后臺(tái)的數(shù)據(jù)時(shí),因?yàn)楹枚嗤獠拷涌诙荚谑褂肑son格式作為返回的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)描述,如何在c中高效使用和處理Json格式的數(shù)據(jù)就成為了必須要解決的問題,需要的朋友可以參考下
    2023-11-11
  • 使用C# 判斷給定大數(shù)是否為質(zhì)數(shù)的詳解

    使用C# 判斷給定大數(shù)是否為質(zhì)數(shù)的詳解

    本篇文章是對(duì)使用C#判斷給定大數(shù)是否為質(zhì)數(shù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 使用C語(yǔ)言訪問51單片機(jī)中存儲(chǔ)器的核心代碼

    使用C語(yǔ)言訪問51單片機(jī)中存儲(chǔ)器的核心代碼

    這篇文章主要介紹了使用C語(yǔ)言訪問51單片機(jī)中存儲(chǔ)器的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C語(yǔ)言超詳細(xì)講解文件的操作

    C語(yǔ)言超詳細(xì)講解文件的操作

    C語(yǔ)言文件操作的方法有很多,函數(shù)也有很多你知道哪些呢?下面是小編為大家?guī)淼腃語(yǔ)言文件操作的方法,歡迎閱讀
    2022-04-04
  • C語(yǔ)言版五子棋游戲的實(shí)現(xiàn)代碼

    C語(yǔ)言版五子棋游戲的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言版五子棋游戲的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)線性表教程示例詳解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)線性表教程示例詳解

    這篇文章主要為大家介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)線性表的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • 算法之排序算法的算法思想和使用場(chǎng)景總結(jié)

    算法之排序算法的算法思想和使用場(chǎng)景總結(jié)

    這篇文章主要介紹了算法之排序算法的算法思想和使用場(chǎng)景總結(jié),本文講解了插入排序、交換排序、選擇排序等幾大類排序算法的特點(diǎn)、思想和使用場(chǎng)景,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

鹤峰县| 潼关县| 镇巴县| 无锡市| 孝义市| 祁东县| 获嘉县| 揭阳市| 乐至县| 广州市| 綦江县| 南开区| 神木县| 中山市| 夹江县| 黑水县| 定日县| 永兴县| 桂林市| 伊宁市| 定日县| 金坛市| 长岭县| 太原市| 肇东市| 稷山县| 洪江市| 雷州市| 天台县| 曲水县| 闽清县| 康定县| 东辽县| 高台县| 饶平县| 新源县| 乾安县| 竹北市| 古田县| 龙岩市| 罗江县|