假设我有一个简单的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;
如何以编程方式检查严重性?
即像logger.getSeverity()
这样的东西?
我已经在StackOverflow上筛选了文档和其他问题,但却找不到简单的API调用...?
答案 0 :(得分:5)
我会说你做不到。日志记录系统分为三层(请参阅日志系统的Design overview)。
您的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