6

severity_logger次のように設定された単純な boost.log ロガーがあるとします。

   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 呼び出しとは何かを見つけることができませんでした..?

4

1 に答える 1

5

私はあなたができないと言うでしょう。ロギング システムは 3 つの層に分かれています (ロギング システムの設計の概要を参照してください)。

  • あなたは、データ収集レイヤー内のseverity_logger属性を持つソース ロガーです。severity_level

  • 設定する重大度logging::core::get()->set_filter(...)は関数オブジェクトであり、ロギング コアに設定されます。ロガーに渡されるすべてのメッセージは、シンクに渡される前に、その関数オブジェクトによってフィルター処理されます。

したがって、実際には のようなものはありませseverityseverity_logger。重大度はコアに渡され、次にシンクに渡されます。


編集:私のコメントを詳しく説明すると、変数severityLevelを宣言して関数に渡すこともできset_filterます(ブーストの参照ラッパーを使用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
于 2014-01-29T11:40:43.953 に答える