Я использую boost::log для одновременного входа в файл и в консоль. Он инициализируется так:
void Init() {
logging::core::get()->set_filter
(
// set logging level to one of trace, debug, info, warning, error, fatal
logging::trivial::severity >= logging::trivial::trace
);
logging::add_common_attributes(); // enables timestamps and such
logging::add_file_log
(
keywords::file_name = logfile + "_%N.log",
keywords::rotation_size = 1024 * 1024 * 50, // 50MB log file max
// keywords::format = "[%TimeStamp%]: %Message%"
keywords::format = "%Message% #[%TimeStamp%]"
);
logging::add_console_log(std::cout,
keywords::format = "%Message%"
);
}
В определенные моменты моей программы я хотел бы изменить файл журнала вручную. Я могу изменить строку «logfile» в приведенном выше коде и снова вызвать Init(), но затем он продолжит запись в старый файл журнала и запустит новый, и начнет удваивать вывод в журнале консоли.
Есть ли какой-то соответствующий «remove_file_log», который мне не хватает, или вручную сказать ему, чтобы он прекратил запись в исходный журнал и перешел к следующему?