boost.log 通过配置文件配置日志严重性

boost.log config log severity by config file

我想在不重新编译的情况下调整严重级别,所以我使用 init_from_stream 从文件中读取严重级别。我不需要更改运行时的其他选项,因此它们的设置像以前一样由 boost.log API.

完成

配置文件是:

[Core]
DisableLogging=false
Filter="%Severity% >= 0"

密码是:

std::ifstream file("log_setting.ini");
boost::log::init_from_stream(file);
boost::log::register_simple_formatter_factory< severity_level, char >("Severity");
// following is same as before(all setting is by calling API, and comment out severity settings)
boost::shared_ptr<boost::log::core> core = boost::log::core::get();
core->set_exception_handler(boost::log::make_exception_suppressor());
//add and set sinks

但是我发现init by file好像和"traditional API setting"是排斥的,如果我加上init_from_stream,就没有什么退出。

我的要求是使用设置文件来控制我需要更改运行时但不是全部参数的某些部分。

在使用格式化程序解析器(当您从设置文件解析格式化程序时使用)之前您需要注册格式化程序工厂

init_from_stream 函数在库功能方面不是唯一的,但它几乎不适合日志设置的运行时更新。无论它在设置中识别出什么接收器,它都会添加到日志记录核心中,无论这些接收器之前是否已添加。

您必须实施自己的机制来更新日志记录配置。您可以使用 settings parser 读取设置文件,但您必须跟踪添加到核心的接收器并自己从设置容器初始化接收器。