Получите серьезность логгера boost.log ..?

Предположим, у меня есть простой boost.log severity_logger Логгер настроен так:

   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 ..?

6

Решение

Я бы сказал, что вы не можете. Система каротажа состоит из трех слоев (см. Обзор дизайна системы логирования).

  • Ваш severity_logger является регистратором источника с атрибутом severity_level в слое сбора данных.

  • Серьезность, с которой вы установили logging::core::get()->set_filter(...) является функциональным объектом, установленным для ядра регистрации. Все сообщения, переданные в регистратор, будут отфильтрованы этим объектом функции, прежде чем они будут переданы в приемники.

Таким образом, на самом деле не существует такой вещи, как severity это severity_logger, Тяжесть просто передается в ядро, а затем в раковины.


РЕДАКТИРОВАТЬ: Разрабатывая мой комментарий, вы также можете объявить переменную severityLevel и передать его set_filter функция (с использованием справочной оболочки Boost 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
5

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector