Высокопроизводительный потокобезопасный логгер для сбора и записи метрик в реальном времени. Поддерживает автоматическое периодическое сохранение в файл с возможностью ручного управления.
├── include/
│ └── metric_logger.h
├── src/
│ └── metric_logger.cpp
├── apps/
│ └── main.cpp
├── tests/
│ └── test_metric_logger.cpp
├── build/
├── .gitignore
├── CMakeLists.txt
├── Makefile
└── README.md- Потокобезопасность - полная поддержка многопоточности
- Автосохранение - периодическая запись в файл с настраиваемым интервалом
- Гибкое управление - добавление, удаление, модификация метрик
- Валидация данных - проверка корректности имен метрик и значений
- Структурированный вывод - читаемый формат записи с временными метками
- Полное тестирование - комплексные unit-тесты с Google Test
- Двойная сборка - поддержка CMake и Makefile
- Компилятор C++17 (g++ 7+, clang++ 5+, MSVC 2017+)
- CMake 3.12+ (опционально)
- Google Test (для тестов, опционально)
# Клонирование репозитория
git clone <repository-url>
cd metric-logger
# Сборка с Makefile
make all
# Или сборка с CMake
mkdir build && cd build
cmake .. && make
# Запуск демо
./bin/metric_logger_demo
Сборка
Использование Makefile
bash
# Полная сборка
make all
# Только библиотека
make lib
# Демонстрационное приложение
make demo
# Сборка и запуск тестов
make test
# Очистка
make clean
# Установка в систему
sudo make install
Использование CMake
bash
# Создание build директории
mkdir build && cd build
# Конфигурация и сборка
cmake .. -DBUILD_TESTS=ON
make
# Запуск тестов
./metric_logger_test
# Запуск демо
./metric_logger_demoЛоггер создает структурированный файл с метриками:
[2024-01-15 10:30:45]
cpu_usage=45.7
memory_usage=82.3
requests=1250
---
[2024-01-15 10:31:45]
cpu_usage=42.1
memory_usage=81.5
requests=1342Проект включает комплексные unit-тесты:
# Запуск тестов
make test
# Или с CMake
./metric_logger_test- Добавление и удаление метрик
- Установка и получение значений
- Потокобезопасность
- Работу с файлами
- Обработку ошибок
- Низкие накладные расходы - оптимизированные структуры данных
- Минимальная блокировка - кратковременные mutex-блокировки
- Эффективная запись - буферизация и batch-запись в файл
- Потокобезопасность - корректная работа в многопоточной среде