Easylogging++源码分析

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        一.

    使用开源项目最大的好处就是可以看它的源码来加深你的理解,理解了其实现原理,则使用起来必定更加得心应手。

       下面几个类是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__)
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值