3XclusiVe / RotationLogger

Механизм ротации логов (Тестовое задание)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RotationLogger

Одноплатный компьютер (контроллер) имеет небольшой объем дискового пространства. Необходимо написать класс Logger, который позволяет хранить наиболее актуальную информацию о работе контроллера, избавляясь от старой (по кругу).

Информация пишется в несколько лог файлов ограниченного размера и передается на сервер в случайные моменты (когда устанавливается качественная связь), переданные файлы на контроллере стираются. Дозапись всегда ведется в последний лог-файл, если размер позволяет. Если на контроллере накапливается максимальное количество лог-файлов не переданных на сервер, самый старый пересоздается.

Приложение, которое использует логгер, не многопоточное, но может быть запущено одновременно в нескольких экземплярах (запускается, выполняет свою работу и закрывается).

Имена файлов должны быть уникальны, чтобы лог-файлы на сервере не перезатирались.

 Конструктор:
 Logger (int vNumber, int vMaxSize, std::string vPath);
 vNumber – максимальное количество лог-файлов в ротации, vMaxSize – максимальный размер одного лог-файла. 
 Методы класса:
 Write (std::string vText); // Запись информацию без даты.
 DateWrite (std::string vText); // Запись информации с датой.

Наличие других методов приветствуется. Оправданное наличие дополнительных аргументов в конструкторе не воспрещается. Желательно С++11 задействовать в минимальном объеме; С++14, С++17 и boost не использовать вообще.

 Тестовое задание успешно выполнено и одобрено

About

Механизм ротации логов (Тестовое задание)


Languages

Language:C++ 94.6%Language:CMake 5.4%