2016-03-21 3 views
0

Я хочу настроить уровень серьезности без перекомпиляции, поэтому я использую init_from_stream для чтения уровня серьезности из файла. Другие варианты Мне не нужно менять время выполнения, поэтому их настройка по-прежнему выполняется с помощью boost.log API.boost.log config log severity по файлу конфигурации

Файл конфигурации является:

[Core] 
DisableLogging=false 
Filter="%Severity% >= 0" 

Код:

std::ifstream file("log_setting.ini"); 
boost::log::init_from_stream(file); 
boost::log::register_simple_formatter_factory< severity_level, char >("Severity"); 
// following is same as before(all setting is by calling API, and comment out severity settings) 
boost::shared_ptr<boost::log::core> core = boost::log::core::get(); 
core->set_exception_handler(boost::log::make_exception_suppressor()); 
//add and set sinks 

Но я обнаружил, что INIT файлом кажется несовместим с "традиционной обстановке API", если добавить init_from_stream, есть ничего не выходит из системы.

Мое требование - использовать файл настроек для управления некоторыми частями параметров, которые мне нужны, чтобы изменить время выполнения, но не все из них.

ответ

1

Вам необходимо зарегистрировать фабрику форматирования до, используя синтаксический анализатор форматирования (используемый при анализе форматирования из файла настроек).

Функция init_from_stream не является исключительной по отношению к библиотечным функциям, но вряд ли подходит для обновлений настроек ведения журнала. Независимо от того, что он распознает в настройках, он добавит к ядру регистрации, независимо от того, были ли ранее добавлены эти поглотители.

Вам необходимо будет реализовать собственный механизм обновления конфигурации ведения журнала. Вы можете использовать settings parser для чтения файла настроек, но вам нужно будет отслеживать приемники, которые вы добавляете в ядро, и самостоятельно инициализировать приемники из контейнера настроек.

+0

Таким образом, цель дизайна init_from_stream - это инициировать журнал из файла, а изменить настройки текущего журнала – jean