このようには機能しません。あなたは後押しするフィルタ機能を提供する必要がある::ログイン::ドキュメントごとのように些細:
http://www.boost.org/doc/libs/1_61_0/libs/log/doc/html/log/tutorial/trivial_filtering.html
void init()
{
logging::core::get()->set_filter
(
// here they've used a constant but you could use a global or
// a function
logging::trivial::severity >= logging::trivial::info
);
}
int main(int, char*[])
{
init();
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
return 0;
}
logging::core::set_filter
に渡されたオブジェクトのタイプはあなたが同じように簡単にできたboost::log::filter
です書き込み:
auto filt = logging::filter(logging::trivial::severity >= logging::trivial::info);
logging::core::get()->set_filter(filt);
filt
は、ジョブを検査するジョブその属性に送信された属性は、それらの属性に対するすべてのテストがtrue
を返すかどうかを返します。この場合、テストは1つしかありません - logging::trivial::severity >= logging::trivial::info
。
属性セットを作成し、何かを放射したいときはboost::log::core
に渡すのがロガーの仕事です。
あなた自身の変数でロギングレベルを追跡する必要があります。片方向です:
#include <iostream>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
namespace logging = boost::log;
int main(int, char*[])
{
// track your own variable here
logging::trivial::severity_level my_log_level = logging::trivial::trace;
// with this filter
auto filt = logging::filter(logging::trivial::severity >= my_log_level);
logging::core::get()->set_filter(filt);
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
// now you have control
if (my_log_level <= logging::trivial::trace)
{
std::cout << "tracing\n";
}
return 0;
}
これは質問に答えません。重大度に応じて条件付きで任意のコードを実行するには何らかの方法が必要です。 – bobeff
答えが肉薄します。残念ながらあなたは間違っていると思います。 –
@bobeffの回答は、独自のログレベルを追跡する方法の例で更新されました。 –