日志库EasyLogging++学习系列(2)—— 日志级别
生活随笔
收集整理的這篇文章主要介紹了
日志库EasyLogging++学习系列(2)—— 日志级别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在很多的C++日志庫中,日志信息會根據(jù)嚴重性來劃分級別,使用者可以設(shè)置嚴重性級別門閥值來控制日志的輸出,即嚴重性級別在該門閥值以上的日志信息才進行記錄。以此不同,在Easylogging++日志庫中,故意默認采用了不劃分級別的日志記錄,以便使用者
可以完全自主地啟用或者禁止某個級別的日志記錄。不過實際上,Easylogging++同樣也支持劃分級別的日志記錄,只是需要額外設(shè)置一個標記:LoggingFlag::HierarchicalLogging。
下面的表格中列舉了GitHub上給出的Easylogging++支持的日志級別(按日志級別由低到高排序):
下面對幾個容易產(chǎn)生誤解的級別加以補充說明:
[cpp] view plaincopy print?#include?"easylogging++.h"?? ?? INITIALIZE_EASYLOGGINGPP?? ?? int?main(int?argc,?char**?argv)?? {?? ????///?防止Fatal級別日志中斷程序?? ????el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);????? ????///?選擇劃分級別的日志????? ????el::Loggers::addFlag(el::LoggingFlag::HierarchicalLogging);??????????????? ????///?設(shè)置級別門閥值,修改參數(shù)可以控制日志輸出?? ????el::Loggers::setLoggingLevel(el::Level::Global);?????? ?? ????LOG(TRACE);?? ????LOG(DEBUG);?? ????LOG(FATAL);?? ????LOG(ERROR);?? ????LOG(WARNING);?? ????LOG(INFO);?? ????VLOG(0);?????????? ?? ????///?Debug模式日志記錄?? ????DLOG(TRACE);?? ????DLOG(DEBUG);?? ????DLOG(FATAL);?? ????DLOG(ERROR);?? ????DLOG(WARNING);?? ????DLOG(INFO);?? ????DVLOG(0);?? ?????? ????system("pause");?? ????return?0;?? }?? #include "easylogging++.h"INITIALIZE_EASYLOGGINGPPint main(int argc, char** argv)
{/// 防止Fatal級別日志中斷程序el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog); /// 選擇劃分級別的日志 el::Loggers::addFlag(el::LoggingFlag::HierarchicalLogging); /// 設(shè)置級別門閥值,修改參數(shù)可以控制日志輸出el::Loggers::setLoggingLevel(el::Level::Global); LOG(TRACE);LOG(DEBUG);LOG(FATAL);LOG(ERROR);LOG(WARNING);LOG(INFO);VLOG(0); /// Debug模式日志記錄DLOG(TRACE);DLOG(DEBUG);DLOG(FATAL);DLOG(ERROR);DLOG(WARNING);DLOG(INFO);DVLOG(0);system("pause");return 0;
}
| Global | Generic level that represents all levels. Useful when setting global configuration for all levels. |
| Trace | Information that can be useful to back-trace certain events - mostly useful than debug logs. |
| Debug | Informational events most useful for developers to debug application. Only applicable if NDEBUG is not defined (for non-VC++) or _DEBUG is defined (for VC++). |
| Fatal | Very severe error event that will presumably lead the application to abort. |
| Error | Error information but will continue application to keep running. |
| Warning | Information representing errors in application but application will keep running. |
| Info | Mainly useful to represent current progress of application. |
| Verbose | Information that can be highly useful and vary with verbose logging level. Verbose logging is not applicable to hierarchical logging. |
| Unknown | Only applicable to hierarchical logging and is used to turn off logging completely. |
- Global 級別,一個概念性的級別,不能應用于實際的日志記錄,也就是說不能用宏 LOG(GLOBLE) 進行日志記錄。在劃分級別的日志記錄中,設(shè)置門閥值為?el::Level::Global 表示所有級別的日志都生效。
- Trace 級別,也許很多人會聯(lián)想到VC中的宏TRACE,自然而然地以為Trace級別的日志只會在debug版本有效。不過實際驗證發(fā)現(xiàn),不論是debug還是release版本,Trace級別的日記都會生效。
- Debug 級別,只在debug模式生效,在Release模式會自動屏蔽該級別所有的日志記錄。除了可以用該級別來記錄debug模式日志之外,還有一些專門用于debug模式的宏定義,更多詳細信息可以查看《日志庫EasyLogging++學習系列(7)—— 記錄方式詳解》。
- Fatal 級別,默認情況下會使程序中斷,可設(shè)置標記?LoggingFlag::DisableApplicationAbortOnFatalLog?來阻止中斷。
- Verbose 級別,可以更加詳細地記錄日志信息,但不適用于劃分級別的日志記錄,意思就是說即使門閥值設(shè)置大于該級別,該級別的日志記錄同樣生效。同時,該級別只能用宏VLOG而不能用宏 LOG(VERBOSE)?進行日志記錄,并且在默認情況下,只有VLOG(0)日志記錄生效,更多詳細信息可以查看《日志庫EasyLogging++學習系列(8)—— Verbose日志詳解》。
- Unknown 級別,同樣也是一個概念性的級別,不能用宏 LOG(UNKNOWN) 進行日志記錄。該級別只適用于在劃分級別的日志記錄中,如果設(shè)置門閥值為?el::Level::Unknown ,那么就表示所有級別的日志記錄都會被完全屏蔽,需要注意的是,Verbose 級別不受此影響。但是如果程序沒有設(shè)置劃分級別標記:LoggingFlag::HierarchicalLogging,那么即使設(shè)置了門閥值為?el::Level::Unknown,而其他級別的日志記錄也會正常輸出。
[cpp] view plaincopy print?
總結(jié)
以上是生活随笔為你收集整理的日志库EasyLogging++学习系列(2)—— 日志级别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想小新锐7000主板型号_2020年高
- 下一篇: python getchar,Linux