【发布时间】:2014-08-11 14:16:21
【问题描述】:
我在一个项目中使用 Boost.Log 1.55.0,我确实想更改 boost::log::sources::severity_logger 实例的所有接收器的严重性过滤器。
这是一个示例,如何使用初始严重性过滤器设置接收器:
void InitializeLogging(LogLevels const kLogLevel) const {
auto line_id = boost::log::expressions::attr<unsigned int>("LineID");
auto severity = boost::log::expressions::attr<LogLevels>("Severity");
auto timestamp = boost::log::expressions::format_date_time<boost::posix_time::ptime>(
"TimeStamp",
"%Y-%m-%d %H:%M:%S");
boost::log::formatter const kFormatter{
boost::log::expressions::stream
<< std::setw(6) << std::setfill('0') << line_id
<< std::setfill(' ')
<< ": " << timestamp
<< " [" << severity << "] "
<< boost::log::expressions::smessage};
using TextSink = boost::log::sinks::synchronous_sink<boost::log::sinks::text_ostream_backend>;
boost::shared_ptr<TextSink> sink = boost::make_shared<TextSink>();
boost::shared_ptr<std::ostream> stream(&std::clog, boost::empty_deleter());
sink->locked_backend()->add_stream(stream);
sink->set_filter(severity >= kLogLevel);
sink->set_formatter(kFormatter);
boost::log::core::get()->add_sink(sink);
boost::log::add_common_attributes();
}
因此,当我通过成员函数 set_filter 创建接收器时,我可以设置过滤器,但我想知道如何修改一个/多个/所有接收器的过滤器为 Boost.Log 的核心配置。
- 是否有任何我尚未看到的功能可以修改现有接收器?
- 如果不是,我是否必须从核心中移除接收器并“重新创建”它们?
【问题讨论】:
标签: c++ logging boost boost-log