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调用..?
我会说你做不到.日志记录系统分为三层(请参阅日志系统的设计概述).
您severity_logger是一个severity_level在数据收集层中具有属性的源记录器.
您设置的严重性logging::core::get()->set_filter(...)是一个为日志记录核心设置的函数对象.在传递给接收器之前,传递给记录器的所有消息都将被该功能对象过滤.
因此,有居然没有这样的事severity是severity_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)