欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年10月09日 09:06:38   作者:cpp_learners  
最近突然心血來潮,想學一下日志方面的操作。在網上找了很多日志相關的技術,最終還是決定使用plog,小巧,快速,跨平臺

一、下載plog

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

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

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

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

將include文件夾拷貝到項目路徑

將頭文件路徑包含進來

右鍵項目 - 屬性 - VC++目錄 - 包含目錄

將項目路徑中的include路徑包含進來

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

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

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

三、使用plog日志庫

簡單用法

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

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

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

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

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

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

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

進入就可以看到剛剛在代碼中寫入的日志信息了

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

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

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

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

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

編譯運行后日志文件

已經將日志信息寫入文件中了!

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

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

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

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

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

編譯運行后

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

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

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

當超過五個日志文件大小存儲時,會對前面剛開始寫入的日志信息進行覆蓋

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

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

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

使用時間作為文件名

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

也就是將當天的年月日作為日志的文件名,這樣運行程序,每天也只會生成一個日志文件,記錄當天的日志信息,也方便后期查詢!

#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)時間 - 年月日時分秒
	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 << "時間日志名字";
	int index = 0;
	while (index < 85) {
		LOGD << "測試日志:" << index++;
	}
	return 0;
}	

編譯運行

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

四、QTCreator使用plog日志庫

將plog文件夾拷貝到QT項目中去,注意,這里并沒有包含那個include文件夾

然后右鍵項目,選擇Add Existing Directory…

勾選上plog,點擊確定

這樣plog模塊就添加進來了

然后在QT項目中添加頭文件就可以使用了

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

可以使用!

五、總結

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

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

相關文章

  • C語言實現(xiàn)簡單的井字棋游戲

    C語言實現(xiàn)簡單的井字棋游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單的井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C++ 中malloc()和free()函數(shù)的理解

    C++ 中malloc()和free()函數(shù)的理解

    這篇文章主要介紹了C++ 中malloc()和free()函數(shù)的理解的相關資料,這里提供用法示例幫助大家理解這部分知識,需要的朋友可以參考下
    2017-08-08
  • Qt實現(xiàn)繪制多個設備的流量曲線圖詳解

    Qt實現(xiàn)繪制多個設備的流量曲線圖詳解

    這篇文章主要為大家詳細介紹了如何使用Qt開發(fā)繪制多個設備的流量曲線圖,文中的示例代碼講解詳細,對我們學習Qt有一定的幫助,需要的可以參考一下
    2023-01-01
  • MFC自繪Button按鈕分析和實現(xiàn)

    MFC自繪Button按鈕分析和實現(xiàn)

    這篇文章主要為大家詳細介紹了MFC自繪Button按鈕分析和實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • c語言詳解動態(tài)內存分配及常見錯誤的解決

    c語言詳解動態(tài)內存分配及常見錯誤的解決

    給數(shù)組分配多大的內存空間?你是否和初學C時的我一樣,有過這樣的疑問。這一期就來聊一聊動態(tài)內存的分配,讀完這篇文章,你可能對內存的分配有一個更好的理解
    2022-04-04
  • C++中fork函數(shù)的使用及原理

    C++中fork函數(shù)的使用及原理

    這篇文章主要介紹了C++中fork函數(shù)的使用及原理,在C++中,fork函數(shù)用于創(chuàng)建一個新的進程稱為子進程,該進程與原始進程幾乎完全相同,需要的朋友可以參考下
    2023-05-05
  • 關于C++面向對象設計的訪問性問題詳解

    關于C++面向對象設計的訪問性問題詳解

    這篇文章主要給大家介紹了關于C++面向對象設計的訪問性問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • 詳解進程同步與互斥機制

    詳解進程同步與互斥機制

    進程同步是一個操作系統(tǒng)級別的概念,是在多道程序的環(huán)境下,存在著不同的制約關系,為了協(xié)調這種互相制約的關系,實現(xiàn)資源共享和進程協(xié)作,從而避免進程之間的沖突,引入了進程同步
    2021-06-06
  • C++中拷貝構造函數(shù)的使用

    C++中拷貝構造函數(shù)的使用

    大家好,本篇文章主要講的是C++中拷貝構造函數(shù)的使用,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • C/C++浮點數(shù)使用的兩個注意事項詳解

    C/C++浮點數(shù)使用的兩個注意事項詳解

    浮點數(shù)都是有符號的,沒有 unsigned 浮點數(shù),下面這篇文章主要給大家介紹了關于C/C++浮點數(shù)使用的兩個注意事項,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-02-02

最新評論