我试图使用一个severity channel logger,但我遇到了BOOST_LOG_SEV不是常量方法的问题——我想这是由于open_record()和push_record()两者的原因。
这基本上会强制我将我的所有类方法都不设置为const,因为它们要向其记录器写入信息。我真的负担不起这样做——所以我目前受限于全局记录器。
在我的当前实现中,每个类都有一个记录器,其中类名作为信道(在它们的构造函数中初始化),并且它可以在任何时候发出带有 BOOST_LOG_SEV(this->logger, level)的日志消息。
我很想听听非常数性背后的原因,以及我的设计是否符合Boost::Log的意图。
这基本上会强制我将我的所有类方法都不设置为const,因为它们要向其记录器写入信息。我真的负担不起这样做——所以我目前受限于全局记录器。
在我的当前实现中,每个类都有一个记录器,其中类名作为信道(在它们的构造函数中初始化),并且它可以在任何时候发出带有 BOOST_LOG_SEV(this->logger, level)的日志消息。
我很想听听非常数性背后的原因,以及我的设计是否符合Boost::Log的意图。
mutable SomeLoggerType my_logger;
。然后您就可以在非const成员中修改它了。这正是可变的用途所在。 - John5342