【问题标题】:Extending lifetime of Boost log core延长 Boost 日志核心的生命周期
【发布时间】:2020-11-29 20:53:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ boost boost-log


    【解决方案1】:

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

    请注意,库提供的所有记录器也在内部保存指向核心的指针。例如,如果您在对象析构函数中执行终止,则将记录器设为该对象的成员,您将能够在销毁期间发出简单的日志记录。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多