Easylogging++最大的特点就是它只有一个头文件,并且无需任何外部依赖
基本使用
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argv, char* argc[]) {
LOG(INFO) << "My first info log using default logger";
return 0;
}
- 包含easylogging++.h头文件
- 使用宏 INITIALIZE_EASYLOGGINGPP_ _初始化:必须使用而且只能使用一次,否则将会产生编译错误。最好的放置这个初始化宏的地方是位于程序入口函数所在文件的顶部,紧跟在包含头文件的代码后面。
- 使用宏 LOG(INFO) 开始日志记录
日志级别
asylogging++支持划分级别的日志记录,只是需要额外设置一个标记:LoggingFlag::HierarchicalLogging
级别 | 描述 |
---|---|
Global | 表示所有级别的通用级别。用于设置所有级别的全局配置。 |
Trace | 对回溯某些事件有用的跟踪信息——通常比调试日志有用 |
Debug | 打印一些通常在debug模式有用的调试信息,仅在NDEBUG未定义(for non-VC++)或_DEBUG已定义 (for VC++)的情况生效。 |
Fatal | 适用于打印致命信息,这些信息通常会导致程序运行崩溃 |
Error | 适用于打印非致命(不会导致进程崩溃)的错误信息 |
Warning | 适用于打印非致命(不会导致进程崩溃)的警告信息 |
Info | 一般适用于表示出当前的程序执行情况和进度 |
Verbose | 可能非常有用并随详细日志几率级别的不同而变化的信息 |
Unknown | 仅适用分层日志记录,用于完全关闭日志记录 |
- Global 级别,一个概念性的级别,不能应用于实际的日志记录(不能用宏 LOG(GLOBLE) 进行日志记录。),在划分级别的日志记录中,设置门阀值为 el::Level::Global 表示所有级别的日志都生效。
- Trace 级别:不论是debug还是release版本,Trace级别的日记都会生效。
- Debug 级别,只在debug模式生效,在Release模式会自动屏蔽该级别所有的日志记录。除了可以用该级别来记录debug模式日志之外,还有一些专门用于debug模式的宏定义
- Fatal 级别,默认情况下会使程序中断,可设置标记
LoggingFlag::DisableApplicationAbortOnFatalLog
来阻止中断。 - Verbose 级别,可以更加详细地记录日志信息,但不适用于划分级别的日志记录,意思就是说即使门阀值设置大于该级别,该级别的日志记录同样生效。同时,该级别只能用宏VLOG而不能用宏 LOG(VERBOSE) 进行日志记录,并且在默认情况下,只有VLOG(0)日志记录生效
- Unknown 级别:同样也是一个概念性的级别,不能用宏 LOG(UNKNOWN) 进行日志记录。该级别只适用于在划分级别的日志记录中,如果设置门阀值为 el::Level::Unknown ,那么就表示所有级别的日志记录都会被完全屏蔽,需要注意的是,Verbose 级别不受此影响。但是如果程序没有设置划分级别标记:LoggingFlag::HierarchicalLogging,那么即使设置了门阀值为 el::Level::Unknown,而其他级别的日志记录也会正常输出。
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argc, char** argv)
{
/// 防止Fatal级别日志中断程序
el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);
/// 选择划分级别的日志
el::Loggers::addFlag(el::LoggingFlag::HierarchicalLogging);
/// 设置级别门阀值,修改参数可以控制日志输出
el::Loggers::setLoggingLevel(el::Level::Global);
/// Debug模式日志记录
DLOG(TRACE);
DLOG(DEBUG);
DLOG(FATAL);
DLOG(ERROR);
DLOG(WARNING);
DLOG(INFO);
DVLOG(0);
system("pause");
return 0;
}