延长 Boost 日志核心的生命周期

Extending lifetime of Boost log core

我想延长 boost::log::core 终止进程的生命周期。

我知道文档中不推荐这样做。但是我尝试使用 Schwarz 计数器作为核心来保持它直到全局变量的最后一个析构函数使用它。

Core 与 Meyer 的单例使用共享指针。是否可以实现 Schwarz 计数器或漂亮的初始化核心?

core::get() 方法 returns shared_ptr 是核心,它是实现 Schwarz 计数器的方法。您可以在程序的正常运行期间调用此方法(即当 main() 正在执行时)并将该指针保存在保证在终止期间存在的数据结构中。当 shared_ptr 存在时,您可以通过该指针访问核心(但不一定通过 core::get())。

请注意,库提供的所有记录器也在内部保存指向核心的指针。例如,如果您在对象析构函数中执行终止,请将记录器设为该对象的成员,这样您就可以在析构过程中发出简单的日志记录。

请注意,核心不是库维护的唯一单例,并且其他单例不受此方法的破坏。例如,您不能在程序终止期间使用 global loggers