プロジェクトで Boost.Log 1.55.0 を使用していますが、インスタンスのすべてのシンクの重大度フィルターを変更したいと考えていboost::log::sources::severity_logger
ます。
初期重大度フィルターを使用して 1 つのシンクをセットアップする方法の例を次に示します。
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();
}
そのため、メンバー関数を介してシンクを作成するときにフィルタリングを設定できますが、Boost.Log のコア用に構成された 1 つ/複数/すべてのシンクのフィルターを変更するset_filter
方法を知りたいです。
- 既存のシンクを変更する、まだ見ていない機能はありますか?
- そうでない場合、コアからシンクを削除して「再作成」する必要がありますか?