一.
使用开源项目最大的好处就是可以看它的源码来加深你的理解,理解了其实现原理,则使用起来必定更加得心应手。
下面几个类是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__)&n

本文探讨了开源库Easylogging++的核心组件,包括Logger、RegisteredLoggers、Writer和Configuration类。Logger用于调试,RegisteredLoggers作为其仓库,Writer负责输出,而Configuration和Configurations管理设置。在log输出过程中,Writer依据Logger的配置决定是否及如何记录日志。文章还提及了RegisteredLoggers的实现方式,以及初始化宏的作用。深入源码阅读有助于更全面地理解Easylogging++的功能和工作原理。
最低0.47元/天 解锁文章
1019

被折叠的 条评论
为什么被折叠?



