磁盘满时 Boost 日志崩溃

Boost log crashes when disk full

当我 运行 磁盘 space 不足时,Boost 日志导致我的应用程序崩溃。

如果我在 excel 中打开一个活动的日志文件,它也会崩溃,并且它会在 excel 打开时尝试翻转该文件。

我的应用程序由于日志记录而崩溃,这真是太糟糕了。它应该只是默默地失败。从转储来看,它看起来像是一个未处理的异常。

如何让它安静地失败而不是让我的应用程序崩溃?

我正在使用 boost trvial 记录器并像这样配置它:

    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)
    );

你必须告诉 boost log 来抑制异常,像这样:

boost::log::core::get()->set_exception_handler(boost::log::make_exception_suppressor());