Boost log вылетает при заполнении диска
Журнал Boost вызывает сбой моего приложения, когда у меня заканчивается свободное место на диске.
Он также аварийно завершает работу, если я открываю активный файл журнала в Excel, и пытается открыть файл, когда Excel открывает его.
Это довольно ужасно, что мое приложение падает из-за регистрации. Это должно просто потерпеть неудачу молча. Из свалки это выглядит как необработанное исключение.
Как я могу заставить его молчать, а не вылетать из приложения?
Я использую boost trvial logger и настраиваю его так:
boost::log::add_file_log(
boost::log::keywords::file_name = "foo.log",
boost::log::keywords::target = C:\\log",
boost::log::keywords::rotation_size = 100000,
boost::log::keywords::max_size = 10 * 100000,
boost::log::keywords::auto_flush = true,
boost::log::keywords::format = "%TimeStamp%,%Message%",
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0)
);
1 ответ
Решение
Вы должны указать boost log для подавления исключений, например так:
boost::log::core::get()->set_exception_handler(boost::log::make_exception_suppressor());