首页 > 解决方案 > 磁盘已满时 Boost 日志崩溃

问题描述

当我用完磁盘空间时,Boost 日志会导致我的应用程序崩溃。

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

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

我怎样才能让它静默失败而不是让我的应用程序崩溃?

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

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

标签: c++loggingboostboost-log

解决方案


您必须告诉 boost log 来抑制异常,如下所示:

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

推荐阅读