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());
Другие вопросы по тегам