一.封装的目的和使用范围
在上一篇文章中介绍了Easylogging的简单使用:http://blog.youkuaiyun.com/woshichenweixian/article/details/77018452 ,一般情况下,在自己的项目中使用时,可以再对其封装一下,使其适合自己的使用习惯。这博文章主要介绍一下我在最近的一个项目中对Easylogging的封装使用,该项目是一个C++后台服务器,对log系统的使用要求如下:
(1)能区分log等级:debug,trace,info,warn,err等等级
(2)能方便控制某个等级的log输出与否
(3)能方便输出:char buf[len] , int buf[lend]等数组,而无需区分数组元素是字符类型还是整数类型
(4)能方便输出数据包
二.初始化和配置
首先是对Easylogging初始化用一个宏进行封装,若后期需要添加其他初始化代码,则只需修改该宏就可以:
#define LogSysInit _INITIALIZE_EASYLOGGINGPP
接着是对Easylogging进行配置,Easylogging的配置和我们最终要使用的log等级有很大关系,所以先介绍一下在该封装系统中对log等级的定义和使用方式:
对log等级进行封装和控制,我个人一般对log等级区分如下:
Debug等级:只在在开发阶段输出的log,用于跟踪开发过程中的调试输出;
Info等级:输出程序运行相关的信息,可在上线后选择是否输出该等级的log;
Trace等级:输出一些程序状态数据,用于跟踪程序运行状态,一般在上线后应该一直让该等级的log输出,但也可关掉该log。
Warn等级:输出影响到程序正常运行,但还能继续运行的数据信息。在上线后也应该一直让该等级的log输出。
Error等级:输出导致程序不能继续运行,必须马上终止程序的错误信息。在上线后也应该一直让该等级log输出。
几个比较容易混淆的log等级的使用情景如下:
Trace:跟踪程序的运行分支,例如:
if(condition 1)
{
Log(Trace) << "in condition 1" ;
}
else if(condition 2)
{