获取boost.log记录器的严重性..?

cac*_*cau 6 c++ boost boost-logging boost-log

假设我有一个简单的boost.log severity_logger记录器设置如下:

   logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::debug);
   logging::add_common_attributes();
   src::severity_logger< logging::trivial::severity_level > logger;
Run Code Online (Sandbox Code Playgroud)

如何以编程方式检查严重性?
有点像logger.getSeverity()..?

我已经在StackOverflow上筛选了文档和其他问题但是却找不到应该是一个简单的API调用..?

mr_*_*org 5

我会说你做不到.日志记录系统分为三层(请参阅日志系统的设计概述).

  • severity_logger是一个severity_level在数据收集层中具有属性的源记录器.

  • 您设置的严重性logging::core::get()->set_filter(...)是一个为日志记录核心设置的函数对象.在传递给接收器之前,传递给记录器的所有消息都将被该功能对象过滤.

因此,有居然没有这样的事severityseverity_logger.严重性只是传递给核心,然后传递到接收器.


编辑:阐述我的评论,你也可以声明一个变量severityLevel并将其传递给set_filter函数(使用boost的参考包装boost::ref())

// defined somewhere:
logging::trivial::severity_level severityLevel = logging::trivial::info;

// passed to set_filter() by reference
logging::core::get()->set_filter(
    logging::trivial::severity >= boost::ref(severityLevel));

// try out the logging:
BOOST_LOG_SEV(logger, warning) << "A warning severity message"; // not filtered out
severityLevel = logging::trivial::error;
BOOST_LOG_SEV(logger, warning) << "Another warning message"; // filtered out
Run Code Online (Sandbox Code Playgroud)