Easylogging++ 共享日志库

本文介绍了Easylogging++日志库如何实现日志共享,特别是通过Storage类来管理日志记录器和配置。文章讨论了如何避免在不同程序中多次初始化,提出使用INITIALIZE_NULL_EASYLOGGINGPP和SHARE_EASYLOGGINGPP宏,并解决了V9.80版本的编译问题。最后,提供了一个完整的示例工程,包括一个创建Storage对象的动态库和多个共享此对象的动态库及主程序。

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

     Easylogging++日志库是可以共享给动态库、静态库以及应用程序共同使用的。在Easylogging++日志库的源码中,有一个名为Storage的类,这个类负责维护Easylogging++日志数据库的主要入口,比如日志记录器的管理,日志配置的管理等都是在Storage类中完成的。

    默认情况下,我们每调用一次初始化宏INITALIZE_EASYLOGGINGCPP就会创建一个Storage对象,所以不同的程序就会有不同的Storage类对性爱那个在负责维护相应的日志记录器和日志配置。如果我们只创建一次Storage类对象,然后再将这个对象共享给其他使用Easylogging++日志库的程序使用,那么就可以保证所有程序都在使用同一个Storage类对象维护的日志记录器和日志配置,如同在单独的应用程序中使用日志记录一样方便和安全。

   为了使用共享的Storage类对象,在其他程序中我们不能用宏INITALIZE_EASYLOGGINGCPP来初始化日志库,应该改用以下两个宏定义中的任意一个:

   · INITIALIZE_NULL_EASYLOGGINGPP

   · SHARE_EASYLOGGINGPP

 如果使用宏INITIALIZE_NULL_EASYLOGGINGPP,那么必须调用函数el::Helpers::setStorage(el::base::type::StoragePointer)来设置共享的Storage类对象,否则将会运行出错;如果使用SHARE_EASYLOGGINGPP,那么必须将共享的Storage类对象作为参数传递进去。在 Easylogging++ V9.80 的版本中,如果使用宏 SHARE_EASYLOGGINGPP 编译会出现错误,提示无法解析的外部符号,下面是定义该宏的源码:

#define SHARE_EASYLOG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值