C++ 增强库

C++ Boost libraries

我正在使用 boost log:

如何在运行时更改(配置)日志记录的严重级别。

答案在您 linked 访问的页面上。您可以在 运行 时间内随时设置过滤器。新过滤器可以检查更新的严重性阈值。

或者,您可以设置自定义过滤器,该过滤器将使用保存级别阈值的外部变量。给出了一个示例 here,请参阅 phoenix::bind 部分。请注意,在这种情况下,您应该准备好多个线程同时调用您的过滤器,并且您必须提供必要的同步。

std::atomic< logging::trivial::severity_level > g_threshold;

void update_threshold(logging::trivial::severity_level level)
{
    g_threshold.store(level, std::memory_order_relaxed);
}

bool my_filter(logging::value_ref< logging::trivial::severity_level > const& level)
{
    logging::trivial::severity_level threshold =
        g_threshold.load(std::memory_order_relaxed);
    return level >= threshold;
}

// ...

logging::core::get()->set_filter(
    phoenix::bind(&my_filter, expr::attr< logging::trivial::severity_level >("Severity")));