一.
使用开源项目最大的好处就是可以看它的源码来加深你的理解,理解了其实现原理,则使用起来必定更加得心应手。
下面几个类是Easylogging中最重要的几个类,弄明白了这几个类就能弄懂各项功能的实现:
Loger:调试者
RegisteredLoggers:调试者仓库,即多个调试者的集合
Writer:调试器
Configuration:配置器
Configurations:配置器仓库,即多个配置器的集合
调试者,调试器,配置器三者的关系如下:
当开始一次log输出时,Writer找到一个对应的Loger,该Loger保存了自己的配置信息,根据这些配置信息,Writer决定是否输出该log,或者以什么格式将log输出到哪个文件中。
上面的流程就是每次log的输出过程。从源码中可以很清晰的看到这个流程,展开宏LINFO:
#define LINFO CINFO("trivial")
"trivial"是Loger的标识符号,表明这条log将使用"trivial"调试器。类似的还有其他的调试器:
#define BINFO CINFO("business")
#define SINFO CINFO("security")
等等调试器。再继续一层层的展开宏,最后可以发现:
#define _ELPP_LOG_WRITER(_logger, _level) easyloggingpp::internal::Writer(\
_logger, easyloggingpp::internal::Aspect::Normal, _level, __func__, __FILE__, __LINE__)