이렇게 작동하지 않습니다. 당신은 :: 향상 로그인 할 :: 사소한를 문서에 따라 필터 기능을 제공해야합니다
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
을 리턴하는지 여부를 리턴합니다. 이 경우 하나의 테스트 (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는 자신의 로깅 수준을 추적하는 방법에 대한 예제를 업데이트했습니다. –