Я представляю замену встроенному каркасу ведения журнала моего приложения.Существующее ведение журнала записывается таким образом, чтобы генерировать файлы таким образом, что файл, в который в данный момент записывается файл, имеет имя "logs.txt" , а пролонгированные файлы называются "Logs.N.txt" , где "Logs.1.txt" является последним после "журналов..txt ".Как мне добиться такого же поведения при ведении журнала Boost V2?
Попытка использовать ведение журнала Boost, поскольку оно обеспечивает хорошую поддержку нескольких приемников, поскольку теперь я должен нацелить свои журналы на 3 местоположения: a) локальный файл журнала, b) драйвер стека в облаке и c) сервер системного журнала, размещенный в отдельном контейнере
Причина, по которой я хочу текущий файлбыть "logs.txt" означает, что, помимо прочего, он позволяет просто tail -F logs.txt
в работающей системе.
Я нашел фрагмент, который вращает журналы и поддерживает ограничения по размеру для каждого файла и всего журнала.
auto strm = boost::log::add_file_log(
boost::log::keywords::file_name = "Logs.%2N.txt",
boost::log::keywords::open_mode = std::ios_base::app,
boost::log::keywords::rotation_size = 5 * 1024, // Max filesize
boost::log::keywords::auto_flush = true
);
auto bkend = strm->locked_backend();
bkend->set_file_collector(boost::log::sinks::file::make_collector(
boost::log::keywords::target = "./", // log file destination
boost::log::keywords::max_size = 100 * 1024, //Max total size
boost::log::keywords::min_free_space = 100000
));
bkend->scan_for_files(boost::log::sinks::file::scan_method::scan_matching, true);
Поведение
Текущий шаблон генерации файла:
Logs.01.txt <--- Oldest file
Logs.02.txt
.
.
.
Logs.19.txt
Logs.20.txt <--- File being written to
, который при продолжении ведения журнала станет
Logs.41.txt <--- Oldest file
Logs.42.txt
.
.
.
Logs.59.txt
Logs.60.txt <--- File being written to
Индекс простопродолжает катиться (так что он выходит за пределы желаемого двузначного индекса)
Logs.131.txt <--- Oldest file
Logs.132.txt
.
.
.
Logs.149.txt
Logs.150.txt <--- File being written to
Требуемый шаблон генерации файла:
logs.txt <--- File being written to
Logs.01.txt <--- Latest rolled over file
Logs.02.txt
.
.
.
Logs.12.txt
Logs.13.txt <--- Oldest file
увеличивается до
logs.txt <--- File being written to
Logs.01.txt <--- Latest rolled over file
Logs.02.txt
.
.
.
Logs.19.txt
Logs.20.txt <--- Oldest file
& asLogs.20.txt
находится на пределе общего пространства, он продолжает перезаписывать файл Logs.20.txt
с помощью Logs.19.txt
и т. Д. Для каждого ролловера.
Таким образом, самый старый файл продолжает переименовываться в следующий индекс, покаон достигает максимального общего размера пространства журнала и затем просто перезаписывается.
Вопросы
- Существует ли конфигурация для бэкэнда ведения журнала файлов, которая может его поддерживать?
- Еслинет, как я могу настроить бэкэнд для этого?
- Кроме того, пожалуйста, укажите мне на любую документацию / учебное пособие (кроме документации Boost.Log) , чтобы повысить логирование, которое говорит о структуре библиотекии взаимодействие на уровне класса, если известно.