我正在尝试在后初始化阶段设置boost log max_size参数。 到目前为止,我能够在初始化阶段将其设置为:
logging::add_file_log(
keywords::auto_flush = true,
keywords::target =BOOST_LOG_FOLDER,
keywords::file_name =BOOST_LOG_FILE,
keywords::time_based_rotation = sinks::file::rotation_at_time_point(0,0,0),
keywords::rotation_size = 30 * 1024 * 1024,
keywords::max_size = 60 * 1024 * 1024,
);
现在我想在此调用后更改max_size(根据输入的值)。
我不知道如何做到这一点
答案 0 :(得分:1)
max_size
参数指定目标目录中旋转文件的最大总大小。它是一个收集器参数,因此为了更改它,您必须创建一个新的收集器并将其设置为add_file_log
返回的文件接收器。
typedef sinks::synchronous_sink< sinks::text_file_backend > sink_t;
boost::shared_ptr< sink_t > sink = logging::add_file_log(
keywords::auto_flush = true,
keywords::target =BOOST_LOG_FOLDER,
keywords::file_name =BOOST_LOG_FILE,
keywords::time_based_rotation = sinks::file::rotation_at_time_point(0,0,0),
keywords::rotation_size = 30 * 1024 * 1024,
keywords::max_size = 60 * 1024 * 1024,
);
sink->locked_backend()->set_file_collector(
sinks::file::make_collector(
keywords::target =BOOST_LOG_FOLDER,
keywords::max_size = 30 * 1024 * 1024
)
);
但请注意,库只能以这种方式减少限制。这是因为每个目标目录只有一个收集器实例,因此即使多个接收器将文件旋转到同一目录中,也会在整个应用程序中普遍维护目录的限制。 make_collector
将验证为给定目标目录设置的当前限制,并设置最严格的限制,max_size
表示选择允许的最小值。