Easylogging++日志库

最近了解到这个很强大的日志库,真的是香。

简介

Easylogging++ 是用于 C++ 应用程序的单头高效日志库。它非常强大,高度可扩展并且可以根据用户的要求进行配置。它提供了编写自己的接收器的能力(通过称为 的特色LogDispatchCallback)。该库目前被github和其他开源源代码控制管理站点上的数百个开源项目使用。

参考

GitHub
https://github.com/amrayn/easyloggingpp
https://www.cnblogs.com/bokeyuan-dlam/articles/7635003.html

使用配置

Easylogging++日志库_第1张图片
我推荐是用配置日志文件进行配置。新建一个easylogging.conf文件
配置解释:
Easylogging++日志库_第2张图片

* GLOBAL:  
    ENABLED                 =   true
    TO_FILE                 =   true  
    TO_STANDARD_OUTPUT      =   true  
    FORMAT                  =   "%datetime %level [%fbase|%line] %msg"  
    FILENAME                =   "C:\\logs\\%datetime{%Y%M%d}.log"  
    MILLISECONDS_WIDTH      =   3  
    PERFORMANCE_TRACKING    =   false  
    MAX_LOG_FILE_SIZE       =   20048576  
    LOG_FLUSH_THRESHOLD     =   0  

* TRACE:  
* DEBUG:  
* FATAL:  
* ERROR:  
* WARNING:  
* INFO:  
* VERBOSE:  

项目初始化的时候加载配置文件即可。

#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
void initLog()
{
	//必须设置标记 LoggingFlag::StrictLogFileSizeCheck
	//否则, 配置文件中MAX_LOG_FILE_SIZE = 20048576 不生效
	//方式一:加载本地conf方式
	el::Loggers::addFlag(el::LoggingFlag::StrictLogFileSizeCheck);
	//配置文件路径地址
	el::Configurations conf("C:\\esaylogging.conf");
	//可以单独设置某一个logger的配置  
	//el::Loggers::reconfigureLogger("default", conf);
	/// 也可以设置全部logger的配置  
	el::Loggers::reconfigureAllLoggers(conf);

	//方式二:加载默认配置
	el::Configurations conf;
	conf.setToDefault();
	conf.setGlobally(el::ConfigurationType::Format, "%datetime %level [%fbase|%line] %msg");
	conf.setGlobally(el::ConfigurationType::Filename, path+"\\%datetime{%Y%M%d}.log");
	conf.setGlobally(el::ConfigurationType::Enabled, "true");
	conf.setGlobally(el::ConfigurationType::ToFile, "true");
	conf.setGlobally(el::ConfigurationType::ToStandardOutput, "true");
	
	el::Loggers::reconfigureAllLoggers(conf);	
}


int main(int argc, char *argv[])
{
	initLog();

	LOG(INFO) << "My First Easylog!";

	return 0;
}

最后就能愉快的使用日志拉。

效果

Easylogging++日志库_第3张图片
能够定位到你代码的输出日志的位置。很香很香。

禁止默认生成的myeasylog.log文件

在easylogging++.cc 添加以下宏定义
#define ELPP_NO_DEFAULT_LOG_FILE

	LINFO << 类名;

main函数中用可以LINFO像其他内置数据类型一样输出了myClass,则会输出log如下:
1 4:32:47.031 INFO MyClass name is Awesome class
如果要输出STL的string,wstring等类和容器:vector,list,map,set等,则只需定义宏:
#define _ELPP_STL_LOGGING
如果要支持QT库的类输出,则需定义宏:
#define _ELPP_QT_LOGGING

你可能感兴趣的:(C++学习,日志)