Boost.Log не может установить фильтр регистрации (необъявленный идентификатор ‘серьезность’)

Я пытаюсь запустить Boost.Log в своем проекте. Проблема в следующей строке из тривиального примера:

using namespace boost::log;
core::get()->set_filter
(
trivial::severity >= trivial::info
);

В моем коде это означает следующее:

boost::log::core::get()->set_filter(
boost::log::trivial::severity >= boost::log::trivial::info
);

Однако я получаю следующие ошибки:

error C2039: 'severity' : is not a member of 'boost::log::v2s_mt_nt5::trivial'
error C2065: 'severity' : undeclared identifier

Я как бы обыскиваю пространства имен, пытаясь выяснить, как я должен это делать, но на самом деле я не нахожу ничего, что работает. Кажется, для этого требуется какая-то сумасшедшая лямбда-функция. Я в порядке с какой-то альтернативой (определяя функцию, которая заполняет уровень фильтрации?), Но я не уверен, как этого добиться. Есть идеи?

Я использую Boost.Log версии 2.0-r862 и Boost 1.53.0.

РЕШЕНИЕ: Райан указал, что я должен проверить мои включения, и, конечно же, я только включал trivial.hpp, но core.hpp а также expressions.hpp Также необходимы, как включает в себя. В том числе их решил проблему.

// need at least these 3 to get "trivial" to work
#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/trivial.hpp>

7

Решение

Смотря на trivial.hpp, кажется severity является частью keywords Пространство имен. Ты пробовал boost::log::keywords::severity?

2

Другие решения

Вот полный рабочий пример в C ++ 11, который суммирует решение @aardvarkk:

#include <boost/log/expressions.hpp>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>

namespace logging = boost::log;

auto init() -> void
{
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::warning
);
}

auto main(int argn, char *args[]) -> int
{
init();

BOOST_LOG_TRIVIAL(info) << "Testing the log system";
BOOST_LOG_TRIVIAL(error) << "Testing the log error";return 0;
}
0

По вопросам рекламы [email protected]