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_EASYLOGG