Skip to content

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

Notifications You must be signed in to change notification settings

IAMN1/logs_file_analyzator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Log Analyzer

Python Tabulate Pytest

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

Ключевые особенности

  • 📊 Расчет среднего времени ответа сервера
  • 🔢 Подсчет количества запросов по API-маршрутам
  • 📂 Обработка нескольких лог-файлов одновременно
  • 🛠️ Обработка ошибок чтения файлов и парсинга JSON
  • ✅ Набор автоматических тестов критически важного функционала

Технологический стек

Основные компоненты

  • Python 3.6+ — основной язык разработки
  • tabulate — библиотека для форматирования табличного вывода

Тестирование

  • pytest — фреймворк для написания и запуска тестов

Установка и запуск

Предварительные требования

  • Python 3.6+

Пошаговая инструкция

  1. Клонируйте репозиторий

  2. Установите зависимости:

pip install -r requirements.txt
  1. Запустите анализатор логов:
python main.py --file /dir/dir/file1.log /dir/dir/file2.log --report average

Использование

Базовый синтаксис

python 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%

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages