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

C++第三方日志庫(kù)Glog的安裝與使用介紹

 更新時(shí)間:2022年02月24日 10:06:45   作者:wendy_ya  
這篇文章主要介紹了C++第三方日志庫(kù)Glog的安裝與使用介紹,本文配置所采用的環(huán)境為Visual?Studio2017,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、glog介紹

Google Logging(glog)是一個(gè)實(shí)現(xiàn)應(yīng)用程序級(jí)日志記錄的C++98庫(kù)。該庫(kù)提供了基于C++風(fēng)格流和各種輔助宏的日志API。

二、glog下載

Glog的地址已經(jīng)從https://code.google.com/p/google-glog/ 變?yōu)榱薶ttps://github.com/google/glog,請(qǐng)從該鏈接地址下載最新版。

官方文檔:http://google-glog.googlecode.com/svn/trunk/doc/glog.html。

三、環(huán)境介紹

本文配置所采用的環(huán)境為Visual Studio2017。

三、glog的編譯詳解

3.1 利用CMake進(jìn)行編譯,生成VS解決方案

首先需要下載并安裝CMake,下載方法參考文章:Windows下CMake的下載與安裝詳解。

然后需要從github上下載glog的源碼。我們這里將源碼下載到文件夾E:\3PartyLibrary下。
然后在glog-master文件夾內(nèi)新建一個(gè)build文件夾,用于存放編譯完成的文件。
【注意】:如果建在該文件夾外部,會(huì)引發(fā)錯(cuò)誤?。。?/strong>

然后使用cmake-gui生成VS解決方案。如下圖所示。

這里選擇你使用的編譯器(我這里使用的是Visual Studio2017),然后在下方輸入x64:

點(diǎn)擊Finish完成。稍等幾分鐘CMake進(jìn)行配置,配置完畢后如下圖所示:

這時(shí)需要進(jìn)行如下設(shè)置:

①是BUILD_SHARED_LIBS,這個(gè)選項(xiàng)我們要勾上,因?yàn)槲覀冃枰獎(jiǎng)討B(tài)庫(kù)。
②是CMAKE_INSTALL_PREFIX,這個(gè)路徑是install后生成的頭文件和庫(kù)文件存放的路徑,這里我們?cè)谠创a同級(jí)目錄下創(chuàng)建一個(gè)文件夾,命名為install。

③和④分別是WITH_GFLAGS和WITH_UNWIND,這兩個(gè)我也不是很清楚是做什么的,但是如果把這兩個(gè)勾上的話,在cmake的過程中就會(huì)報(bào)warning,因此都不勾。

之后分別點(diǎn)擊Configure和Generate,生成完成后沒有紅色選項(xiàng)。

3.2 利用VS對(duì)項(xiàng)目進(jìn)行編譯

上述步驟生成完畢后,會(huì)在build目錄下會(huì)生成sln解決方案,使用Visual Studio打開glog.sln解決方案,打開后目錄如下:

選擇Release模式,分別對(duì)ALL_BUILD和INSTALL兩個(gè)項(xiàng)目進(jìn)行生成,如下圖所示。(如果項(xiàng)目在debug模式下開發(fā),就在debug模式下生成glog的DLL文件;如果項(xiàng)目在release模式下開發(fā),就在release模式下生成glog的DLL文件;我這里選擇的是Release模式)

生成過程應(yīng)該不會(huì)有錯(cuò)誤。

生成成功后就在install目錄下生成頭文件和庫(kù)文件。如下圖所示。

ok!以上便是glog編譯的全部?jī)?nèi)容了,接下來的小節(jié)介紹一下glog的基本使用。

四、glog的基本使用

4.1 創(chuàng)建VS項(xiàng)目

新建一個(gè)Visual Studio項(xiàng)目,Release生成。

這里,為了代碼目錄結(jié)構(gòu)清晰,將上面生成的頭文件放在了include文件夾中,將上面生成的.lib文件放在了lib文件夾中,將上面生成的.dll文件放在工程所在文件夾中,如下圖所示。

4.2 將glog相關(guān)文件包含在項(xiàng)目中

在使用vs新建項(xiàng)目后,需要將我們上面生成的頭文件包含在項(xiàng)目的Include Directories中,將上面生成的庫(kù)文件包含在項(xiàng)目的Library Directories中。如下圖所示。

【注意】:一定要選擇x64和Release?。。?/p>

4.3 編寫代碼進(jìn)行測(cè)試

最簡(jiǎn)單的測(cè)試代碼如下:

#ifndef GLOG_NO_ABBREVIATED_SEVERITIES
#define GLOG_NO_ABBREVIATED_SEVERITIES // 如果不加這個(gè)宏定義代碼就會(huì)報(bào)錯(cuò)
#endif
#include <glog/logging.h>

#pragma comment(lib, "glog.lib")

int main(int argc, char* argv[])
{
	FLAGS_alsologtostderr = true;//是否將日志輸出到文件和stderr
	google::InitGoogleLogging("test");//使用glog之前必須先初始化庫(kù),僅需執(zhí)行一次,括號(hào)內(nèi)為程序名
	LOG(INFO) << "Hello,GLOG!";
	google::ShutdownGoogleLogging();//當(dāng)要結(jié)束glog時(shí)必須關(guān)閉庫(kù),否則會(huì)內(nèi)存溢出

	return 0;
}

輸出為:

I20220220 14:27:55.136509 5080 test.cpp:9] Hello,GLOG!

【注意】:GLog在整個(gè)項(xiàng)目周期中只允許生成一個(gè)日志文件,也就是說,glog從初始化到注銷整個(gè)過程,不允許再次調(diào)用glog的初始化或者注銷,另一種意思可以理解為只允許有一個(gè)實(shí)例化對(duì)象。

4.4 測(cè)試代碼2

測(cè)試代碼如下:

#ifndef GLOG_NO_ABBREVIATED_SEVERITIES
#define GLOG_NO_ABBREVIATED_SEVERITIES // 如果不加這個(gè)宏定義代碼就會(huì)報(bào)錯(cuò)
#endif
#include <glog\logging.h>

#pragma comment(lib, "glog.lib")
int main()
{
	google::InitGoogleLogging("test");//使用glog之前必須先初始化庫(kù),僅需執(zhí)行一次,括號(hào)內(nèi)為程序名
	FLAGS_alsologtostderr = true;//是否將日志輸出到文件和stderr
	FLAGS_colorlogtostderr = true;//是否啟用不同顏色顯示
	google::SetLogDestination(google::GLOG_INFO, "E:\\logs\\INFO_");//INFO級(jí)別的日志都存放到logs目錄下且前綴為INFO_
	google::SetLogDestination(google::GLOG_WARNING, "E:\\logs\\WARNING_");//WARNING級(jí)別的日志都存放到logs目錄下且前綴為WARNING_
	google::SetLogDestination(google::GLOG_ERROR, "E:\\logs\\ERROR_");	//ERROR級(jí)別的日志都存放到logs目錄下且前綴為ERROR_
	google::SetLogDestination(google::GLOG_FATAL, "E:\\logs\\FATAL_");	//FATAL級(jí)別的日志都存放到logs目錄下且前綴為FATAL_
	LOG(INFO) << "info";
	LOG(WARNING) << "warning";
	LOG(ERROR) << "error";
	/*LOG(FATAL) << "fatal";*/
	google::ShutdownGoogleLogging();//當(dāng)要結(jié)束glog時(shí)必須關(guān)閉庫(kù),否則會(huì)內(nèi)存溢出
	return 0;
}

代碼執(zhí)行后,會(huì)在E:\logs文件夾下生成四個(gè)log文件,這里我沒有將FATAL也打印出來是因?yàn)楫?dāng)glog檢測(cè)到"LOG(FATAL)<<"代碼時(shí)就會(huì)直接結(jié)束程序,不繼續(xù)執(zhí)行后面的代碼。

五、代碼詳解

5.1 define

除了上述在前三行加入代碼外,也可以選擇添加預(yù)處理項(xiàng)。項(xiàng)目屬性 ——> c/c++ ——> 預(yù)處理器。 添加GLOG_NO_ABBREVIATED_SEVERITIES。

5.2 include

在需要使用glog打印日志的cpp文件中包含頭文件,及加載glog庫(kù)文件。注意:每個(gè)使用glog的cpp文件都要添加,代碼如下:

#include "glog/logging.h"
#pragma comment(lib,"libglog.lib")

5.3 InitGoogleLogging

用glog之前必須先初始化庫(kù),要生成日志文件只需在開始log之前調(diào)用一次:

google::InitGoogleLogging(argv[0]);  //括號(hào)內(nèi)是程序名

5.4 ShutdownGoogleLogging

當(dāng)要結(jié)束glog時(shí)必須關(guān)閉庫(kù),否則會(huì)內(nèi)存溢出:

google::ShutdownGoogleLogging();

下一篇文章(C++第三方日志庫(kù)Glog基本語法介紹)會(huì)對(duì)glog庫(kù)的基本語法進(jìn)行詳細(xì)介紹,歡迎關(guān)注~

參考:

https://blog.csdn.net/w_b_h/article/details/107070652
https://blog.csdn.net/qq_27278957/article/details/84648912
https://blog.csdn.net/fx_odyssey/article/details/102815949
https://blog.csdn.net/weixin_33929309/article/details/85541046
https://www.cnblogs.com/tianyajuanke/archive/2013/02/22/2921850.html
https://my.oschina.net/u/4320185/blog/3755592

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

相關(guān)文章

  • C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析

    C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析

    這篇文章主要介紹了C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析,迭代器模式注重對(duì)集合中元素的遍歷而不使其暴露,需要的朋友可以參考下
    2016-03-03
  • C語言實(shí)現(xiàn)學(xué)生獎(jiǎng)學(xué)金評(píng)定系統(tǒng)

    C語言實(shí)現(xiàn)學(xué)生獎(jiǎng)學(xué)金評(píng)定系統(tǒng)

    這篇文章主要介紹了C語言實(shí)現(xiàn)學(xué)生獎(jiǎng)學(xué)金評(píng)定系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++小游戲tankwar之界面繪制的詳細(xì)過程

    C++小游戲tankwar之界面繪制的詳細(xì)過程

    最近沒有項(xiàng)目做,空閑了下來,于是寫了個(gè)c++小游戲來打發(fā)時(shí)間,下面通過本文基于圖文并茂的形式給大家介紹C++小游戲tankwar之界面繪制的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-05-05
  • Qt實(shí)現(xiàn)可拖動(dòng)按鈕

    Qt實(shí)現(xiàn)可拖動(dòng)按鈕

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)可拖動(dòng)按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語言 數(shù)據(jù)結(jié)構(gòu)中棧的實(shí)現(xiàn)代碼

    C語言 數(shù)據(jù)結(jié)構(gòu)中棧的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C語言 數(shù)據(jù)結(jié)構(gòu)中棧的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • C語言實(shí)現(xiàn)打印數(shù)字金字塔

    C語言實(shí)現(xiàn)打印數(shù)字金字塔

    這篇文章主要介紹了C語言實(shí)現(xiàn)打印數(shù)字金字塔方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 下標(biāo)操作符重載模擬多維數(shù)組詳解

    下標(biāo)操作符重載模擬多維數(shù)組詳解

    雖然不能直接實(shí)現(xiàn)一對(duì)下標(biāo)操作符重載,但是我們可以間接模擬。思路是這樣的,先通過單下標(biāo)操作返回一個(gè)具有下標(biāo)操作能力的左值,對(duì)左值進(jìn)行下標(biāo)操作,兩個(gè)下標(biāo)操作表達(dá)式聯(lián)立就實(shí)現(xiàn)了雙下標(biāo)操作
    2013-09-09
  • C++?11新特性之右值引用使用案例與應(yīng)用場(chǎng)景

    C++?11新特性之右值引用使用案例與應(yīng)用場(chǎng)景

    右值引用和move語義是C++ 11中重要的特性之一,可以提高程序的效率和性能,右值引用是一種新的引用類型,下面這篇文章主要給大家介紹了關(guān)于C++?11新特性之右值引用使用案例與應(yīng)用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 關(guān)于C/C++中的side effect(負(fù)效應(yīng))和sequence point(序列點(diǎn))

    關(guān)于C/C++中的side effect(負(fù)效應(yīng))和sequence point(序列點(diǎn))

    不知你在寫code時(shí)是否遇到這樣的問題?int i = 3; int x = (++i) + (++i) + (++i); 問x值為多少?進(jìn)行各種理論分析,并在編譯器上實(shí)踐,然而可能發(fā)現(xiàn)最終的結(jié)果是不正確的,也是不穩(wěn)定的,不同的編譯器可能會(huì)產(chǎn)生不同的結(jié)果。這讓人很頭疼
    2013-10-10
  • C++類繼承時(shí)的構(gòu)造函數(shù)

    C++類繼承時(shí)的構(gòu)造函數(shù)

    這篇文章主要介紹了C++類繼承時(shí)的構(gòu)造函數(shù),C++中,子類繼承父類除去構(gòu)造函數(shù)和析構(gòu)函數(shù)以外的所有成員。因此,子類需要編寫自己的構(gòu)造函數(shù)和析構(gòu)函數(shù)。更多相關(guān)詳情需要的小伙伴可以參考下面文章介紹
    2022-03-03

最新評(píng)論