2015-07-20 3 views
0

Я использую boost log:C++ увеличить библиотеки

Как изменить (Конфигурировать) уровень важности для ведения журнала во время выполнения.

+0

Пожалуйста, используйте файлы справки по основному вопросу или будьте конкретны, разместив свою работу и проблему! – MarmiK

ответ

0

Ответ на эту страницу linked. Вы можете установить фильтр в любое время во время выполнения. Новый фильтр может проверяться на обновленный порог серьезности.

В качестве альтернативы вы можете установить настраиваемый фильтр, который будет использовать внешнюю переменную с порогом уровня. Приводится пример here, см. Раздел phoenix::bind. Обратите внимание, что в этом случае вы должны быть готовы к тому, что ваш фильтр будет вызываться одновременно из нескольких потоков, и вы должны предоставить необходимую синхронизацию.

std::atomic<logging::trivial::severity_level> g_threshold; 

void update_threshold(logging::trivial::severity_level level) 
{ 
    g_threshold.store(level, std::memory_order_relaxed); 
} 

bool my_filter(logging::value_ref<logging::trivial::severity_level> const& level) 
{ 
    logging::trivial::severity_level threshold = 
     g_threshold.load(std::memory_order_relaxed); 
    return level >= threshold; 
} 

// ... 

logging::core::get()->set_filter(
    phoenix::bind(&my_filter, expr::attr<logging::trivial::severity_level>("Severity")));