easylog 使用_Easyloggingpp的使用
對(duì)于有開(kāi)發(fā)經(jīng)驗(yàn)的程序員來(lái)說(shuō),記錄程序執(zhí)行日志是一件必不可少的事情。通過(guò)查看和分析日志信息,不僅可以有效地幫助我們調(diào)試程序,而且當(dāng)程序正式發(fā)布運(yùn)行之后,更是可以幫助我們快速、準(zhǔn)確地定位問(wèn)題。在現(xiàn)在這個(gè)開(kāi)源的年代,并不需要我們自己去寫(xiě)一套日志庫(kù),開(kāi)源的版本已經(jīng)有很多了。然而遺憾的是,在目前開(kāi)源的C++日志庫(kù)中,并沒(méi)有一個(gè)在使用份額上占絕對(duì)優(yōu)勢(shì)的,我自己之前用過(guò)log4cplus和glog,這兩個(gè)庫(kù)都比較成熟了,而且網(wǎng)上教程也很多,所以一直都很喜歡使用這兩個(gè)日志庫(kù)。
前段時(shí)間,在GitHub上我偶然看到了另外一個(gè)開(kāi)源的C++日志庫(kù),當(dāng)時(shí)還只是粗略地研究了一下,結(jié)果竟然讓我愛(ài)不釋手,它就是Easylogging++。和log4cplus和glog相比,Easylogging++最大的特點(diǎn)就是它只有一個(gè)頭文件,并且無(wú)需任何外部依賴(lài),我從來(lái)沒(méi)有見(jiàn)過(guò)哪一個(gè)日志庫(kù)可以做到如此輕量而且還能兼顧性能的。除此之外,Easylogging++使用起來(lái)非常簡(jiǎn)單,同時(shí)還支持文件配置,提供了強(qiáng)大的自定義日志格式的能力,還提供對(duì)第三方庫(kù),STL容器的支持。面對(duì)如此炫酷的開(kāi)源日志,怎么能不去學(xué)習(xí)學(xué)習(xí)!!!
功能特征
高度可配置
速度非???/p>
線(xiàn)程和類(lèi)型安全
跨平臺(tái)
自定義日志模式
條件日志和偶然日志
性能跟蹤
詳細(xì)記錄日志
中斷處理
輔助CHECK宏
STL 日志
第三方庫(kù)日志(比如Qt, boost, wxWidgets)
可擴(kuò)展性
支持Debug功能
系統(tǒng)日志記錄
perror風(fēng)格日志
C++流操作符風(fēng)格日志
C 語(yǔ)言printf風(fēng)格日志
……
版本說(shuō)明
寫(xiě)這篇文章時(shí),最新的?Easylogging++ 版本是V9.80,如果編譯器不支持C++11的話(huà),是無(wú)法編譯的。對(duì)于Visual Studio系列來(lái)說(shuō),必須是VS2012或以上版本才行。如果還停留在VS2010、VS2008,VS2005的小伙伴,可以考慮使用EasyLogging++ V8.91版本。需要注意的是,不同的版本在使用方法和功能支持上都會(huì)有所差異。特別指出,本系列中所有的學(xué)習(xí)記錄,只適用于?Easylogging++?版本V9.80。另外,在本系列文章中出現(xiàn)的所有演示代碼都是在 64Bit Windows 7 系統(tǒng)下使用 Visual Studio 2013 編譯測(cè)試的。
快速使用
正如前面所說(shuō),Easylogging++使用起來(lái)非常簡(jiǎn)單,簡(jiǎn)單到什么地步呢?下面是GitHub上給出一個(gè)示例代碼:
1 #include "easylogging++.h"
2
3 INITIALIZE_EASYLOGGINGPP4
5 int main(int argv, char*argc[]) {6 LOG(INFO) << "My first info log using default logger";7 return 0;8 }
示例代碼只有短短幾行,每行代碼的作用也一目了然:
包含easylogging++.h頭文件
使用宏 INITIALIZE_EASYLOGGINGPP初始化
使用宏 LOG(INFO) 開(kāi)始日志記錄
就是這么簡(jiǎn)單,只需三步,即可完成你的日志記錄。這里需要特別說(shuō)明的是,初始化宏?INITIALIZE_EASYLOGGINGPP 必須使用而且只能使用一次,否則將會(huì)產(chǎn)生編譯錯(cuò)誤。最好的放置這個(gè)初始化宏的地方是位于程序入口函數(shù)所在文件的頂部,緊跟在包含頭文件的代碼后面。
自定義日志
Easylogging++強(qiáng)大的自定義日志格式的能力是毋容置疑的,我們可以通過(guò)配置文件、配置參數(shù)、配置宏定義等方式來(lái)定義自己想要的日志格式。下面是一個(gè)利用配置文件來(lái)自定義日志的一個(gè)例子:
1 #include "easylogging++.h"
2
3 INITIALIZE_EASYLOGGINGPP4
5 int main(int argc, char**argv)6 {7 el::Configurations conf("my_log.conf");8 el::Loggers::reconfigureAllLoggers(conf);9
10 LOG(TRACE) << "***** trace log *****";11 LOG(DEBUG) << "***** debug log *****";12 LOG(ERROR) << "***** error log *****";13 LOG(WARNING) << "***** warning log *****";14 LOG(INFO) << "***** info log *****";15
16 system("pause");17 return 0;18 }
其中配置文件 my_log.conf 的內(nèi)容如下:
1 *GLOBAL:2 ENABLED = true
3 TO_FILE = true
4 TO_STANDARD_OUTPUT = true
5 FORMAT = "[%level | %datetime] | %msg"
6 FILENAME = "log\\log_%datetime{%Y%M%d}.log"
7 MILLISECONDS_WIDTH = 3
8 PERFORMANCE_TRACKING = false
9 MAX_LOG_FILE_SIZE = 1048576
10 LOG_FLUSH_THRESHOLD = 0
11
12 *TRACE:13 FILENAME = "log\\trace_log_%datetime{%Y%M%d}.log"
14
15 *DEBUG:16 FILENAME = "log\\debug_log_%datetime{%Y%M%d}.log"
17
18 *FATAL:19 ENABLED = false
20
21 *ERROR:22 FILENAME = "log\\error_log_%datetime{%Y%M%d}.log"
23
24 *WARNING:25 FILENAME = "log\\warning_log_%datetime{%Y%M%d}.log"
26
27 *INFO:28 FILENAME = "log\\info_log_%datetime{%Y%M%d}.log"
29
30 *VERBOSE:31 ENABLED = false
通過(guò)這樣的一個(gè)配置文件生成出來(lái)的日志會(huì)非常整齊,同時(shí)日志信息會(huì)保存到不同的文件中,而且還會(huì)輸出到標(biāo)準(zhǔn)輸出窗口。如下:
看到這里,相信對(duì)于那些以前用過(guò)類(lèi)似log4cplus或者glog等日志庫(kù)的小伙伴來(lái)說(shuō),其實(shí)已經(jīng)完全可以上手使用Easylogging++了,剩下的部分都是一些細(xì)節(jié)或者是Easylogging++擴(kuò)展性的功能介紹,這些會(huì)在后面的學(xué)習(xí)中逐漸加以記錄。如果有和我一樣看到并且就喜歡上Easylogging++的朋友,就讓我們一起來(lái)深入了解Easylogging++并把它應(yīng)用到實(shí)際的開(kāi)發(fā)之中吧。
總結(jié)
以上是生活随笔為你收集整理的easylog 使用_Easyloggingpp的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 当前时间转换的秒数_C++ 日期 amp
- 下一篇: 定义一个属性_CocosCreator脚