Инструмент для анализа JSON-логов, вычисления статистики и вывода результатов в удобном табличном формате. Поддерживает обработку нескольких файлов, расчет среднего времени ответа и подсчет запросов по API-маршрутам.
- 📊 Расчет среднего времени ответа сервера
- 🔢 Подсчет количества запросов по API-маршрутам
- 📂 Обработка нескольких лог-файлов одновременно
- 🛠️ Обработка ошибок чтения файлов и парсинга JSON
- ✅ Набор автоматических тестов критически важного функционала
- Python 3.6+ — основной язык разработки
- tabulate — библиотека для форматирования табличного вывода
- pytest — фреймворк для написания и запуска тестов
- Python 3.6+
-
Клонируйте репозиторий
-
Установите зависимости:
pip install -r requirements.txt- Запустите анализатор логов:
python main.py --file /dir/dir/file1.log /dir/dir/file2.log --report averagepython main.py --file <файл1> [<файл2> ...] [--report average]| Параметр | Описание | Обязательный |
|---|---|---|
--file |
Лог-файлы для анализа | Да |
--report |
Тип отчета (поддерживается average) | Нет |
Общая статистика:
+---------------------------+----------------------------+
| Обработано файлов: | 2 |
+---------------------------+----------------------------+
| Проанализированные файлы: | example2.log, example1.log |
+---------------------------+----------------------------+
| Обработано запросов: | 110498 |
+---------------------------+----------------------------+
| Среднее время ответа: | 0.060 сек |
+---------------------------+----------------------------+
API-маршруты:
+-----+--------------------------+--------------+
| # | Маршрут | Количетсво |
+=====+==========================+==============+
| 1 | /api/homeworks/... | 55312 |
+-----+--------------------------+--------------+
| 2 | /api/context/... | 43928 |
+-----+--------------------------+--------------+
| 3 | /api/specializations/... | 8335 |
+-----+--------------------------+--------------+
| 4 | /api/challenges/... | 1476 |
+-----+--------------------------+--------------+
| 5 | /api/users/... | 1447 |
+-----+--------------------------+--------------+
.
├── main.py # Главный скрипт для запуска
├── logs_reader.py # Модуль для чтения и анализа логов
├── test_data/ # Директория с данными для теста
├── tests/ # Директория с тестами
│ └── test_logs_reader.py # Тесты для модуля logs_reader
└── README.md # Документация
Программа ожидает JSON-логи в следующем формате (каждая строка - отдельный JSON-объект):
{"url": "/api/users", "response_time": 0.12, ...}
{"url": "/api/products", "response_time": 0.05, ...}pytest tests/- Обработка валидных логов
- Обработка пустых файлов
- Обработка файлов с некорректным JSON
- Обработка нескольких файлов одновременно
- Корректность расчетов статистики
- Поддерживается только один тип отчета (
average) - Обрабатываются только файлы с кодировкой UTF-8
- При ошибке чтения файла программа завершает работу
###Покрытие тестами
- Покрытие критически важного функционала составляет составляет 87%
Name Stmts Miss Cover
-----------------------------------------------
logs_reader.py 45 9 80%
tests\__init__.py 0 0 100%
tests\test_logs_reader.py 22 0 100%
-----------------------------------------------
TOTAL 67 9 87%