I am using Boost.Log 1.55.0 in a project and I do want to change the severity filter for all sinks of a boost::log::sources::severity_logger
instance.
Here's an example how-to setup one sink with an initial severity filter:
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();
}
So I am able to setup the filtering when I create the sink via the member function set_filter
, but I want to know how-to modify the filter of one/more/all sinks that are configured for the core of Boost.Log.
- Is there any function I did not see yet to modify existing sinks?
- If not, do I have to remove the sinks from the core and "re-create" them?