{"id":24716602,"url":"https://github.com/stacenko-developer/log-analyzer","last_synced_at":"2026-04-20T09:01:59.264Z","repository":{"id":273506794,"uuid":"919936517","full_name":"stacenko-developer/log-analyzer","owner":"stacenko-developer","description":"Анализатор логов NGINX","archived":false,"fork":false,"pushed_at":"2025-01-21T12:50:58.000Z","size":149,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-22T09:22:12.712Z","etag":null,"topics":["java","junit","log-analysis","lombok","maven","mockito","nginx-log-analysis","nginx-log-parser"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stacenko-developer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-21T09:26:33.000Z","updated_at":"2025-01-21T13:24:19.000Z","dependencies_parsed_at":"2025-01-21T10:44:11.769Z","dependency_job_id":null,"html_url":"https://github.com/stacenko-developer/log-analyzer","commit_stats":null,"previous_names":["stacenko-developer/log-analyzer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stacenko-developer/log-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacenko-developer%2Flog-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacenko-developer%2Flog-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacenko-developer%2Flog-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacenko-developer%2Flog-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stacenko-developer","download_url":"https://codeload.github.com/stacenko-developer/log-analyzer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacenko-developer%2Flog-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32040353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","junit","log-analysis","lombok","maven","mockito","nginx-log-analysis","nginx-log-parser"],"created_at":"2025-01-27T09:13:23.105Z","updated_at":"2026-04-20T09:01:59.171Z","avatar_url":"https://github.com/stacenko-developer.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![tbank-logo.svg](img/tbank-logo.svg)\n# Академия бэкенда от Т-Банка 2024, 1 семестр, Проект 3: Анализатор логов\n\n## Описание\n\nЛог-файлы являются важной частью работы любого сервера, так как они содержат информацию о том, какие запросы были отправлены на сервер, какие ошибки возникли и какие действия были выполнены.\n\nОднако, обрабатывать и анализировать эти логи вручную может быть очень трудоемким процессом. Для решения этой проблемы напишем программу-анализатор логов.\n\nНа вход программе через аргументы командной строки задаётся:\n- путь к одному или нескольким NGINX лог-файлам в виде локального шаблона или URL\n- необязательные временные параметры from и to в формате ISO8601\n- необязательный параметр формата вывода результата: markdown или adoc\n\nПримеры вызова программы:\n```\nanalyzer --path logs/2024* --from 2024-08-31 --format markdown\n\nanalyzer --path https://raw.githubusercontent.com/elastic/examples/master/Common%20Data%20Formats/nginx_logs/nginx_logs --format adoc\n\nanalyzer --path logs/**/2024-08-31.txt\n\nanalyzer --path logs/2024* --filter-field method --filter-value GET\n```\n\nПрограмма должна выполнять следующие задачи:\n- подсчитывать общее количество запросов\n- определять наиболее часто запрашиваемые ресурсы\n- определять наиболее часто встречающиеся коды ответа\n- рассчитывать средний размер ответа сервера\n\n## Функциональные требования\n- Программа должна принимать на вход путь к лог-файлам, который может быть шаблоном для локальных файлов или URL.\n- Программа должна поддерживать опциональные параметры: from и to для анализа записей в заданном временном диапазоне; выходной формат данных в виде markdown или adoc документа\n- Подсчет общего количества запросов\n- Опредение наиболее часто запрашиваемых ресурсов\n- Определение наиболее часто встречающихся кодов ответа\n- Определение наиболее часто встречающихся адресов\n- Определение наиболее часто встречающихся методов\n- Рассчет среднего размер ответа сервера\n- Рассчет 95% перцентиля размера ответа сервера\n- Добавить фильтрацию по значению поля\n\n## Нефункциональные требования\n- Программа должна обрабатывать лог-файлы эффективно, не загружая весь файл в память.\n- Программа должна иметь четкую и понятную логику обработки ошибок.\n- Результат работы программы должен быть легко интерпретируемым человеком.\n\n## Описание входных и выходных данных\n### Ввод\n- Путь к лог-файлам: локальный путь (с поддержкой glob) или URL\n- Временные параметры: `from` и `to` в формате ISO8601 (опционально).\n- Формат вывода: `markdown` или `adoc` (опционально).\n### Вывод\n- Текстовый отчёт в выбранном формате с анализом логов.\n\n## Пример вывода\n```\n#### Общая информация\n|            Метрика             |            Значение            |\n|:------------------------------:|:------------------------------:|\n|             Файлы              | [src/main/resources/log1.txt]  |\n|         Начальная дата         |               -                |\n|         Конечная дата          |               -                |\n|      Количество запросов       |               50               |\n|     Средний размер ответа      |            249.88b             |\n|       95p размера ответа       |              951b              |\n\n#### Запрашиваемые ресурсы\n|             Ресурс             |           Количество           |\n|:------------------------------:|:------------------------------:|\n|      /downloads/product_1      |               32               |\n|      /downloads/product_2      |               18               |\n\n#### Коды ответа\n|              Код               |              Имя               |           Количество           |\n|:------------------------------:|:------------------------------:|:------------------------------:|\n|              304               |          NOT_MODIFIED          |               34               |\n|              404               |           NOT_FOUND            |               9                |\n|              200               |               OK               |               7                |\n\n#### IP адреса\n|             Адрес              |           Количество           |\n|:------------------------------:|:------------------------------:|\n|          80.91.33.133          |               10               |\n|          93.180.71.3           |               7                |\n|          217.168.17.5          |               6                |\n|        173.203.139.108         |               4                |\n|         91.234.194.89          |               3                |\n\n#### HTTP методы\n|             Метод              |           Количество           |\n|:------------------------------:|:------------------------------:|\n|              GET               |               49               |\n|              HEAD              |               1                |\n```\n\n\n## Начало работы\n\nДля того чтобы собрать проект, и проверить, что все работает корректно, можно\nзапустить из модального окна IDEA\n[Run Anything](https://www.jetbrains.com/help/idea/running-anything.html)\nкоманду:\n\n```shell\nmvn clean verify\n```\n\nАльтернативно можно в терминале из корня проекта выполнить следующие команды.\n\nДля Unix (Linux, macOS, Cygwin, WSL):\n\n```shell\n./mvnw clean verify\n```\n\nДля Windows:\n\n```shell\nmvnw.cmd clean verify\n```\n\nДля окончания сборки потребуется подождать какое-то время, пока maven скачает\nвсе необходимые зависимости, скомпилирует проект и прогонит базовый набор\nтестов.\n\nЕсли вы в процессе сборки получили ошибку:\n\n```shell\nRule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion failed with message:\nJDK version must be at least 22\n```\n\nЗначит, версия вашего JDK ниже 22.\n\nЕсли же получили ошибку:\n\n```shell\nRule 1: org.apache.maven.enforcer.rules.version.RequireMavenVersion failed with message:\nMaven version should, at least, be 3.8.8\n```\n\nЗначит, у вас используется версия maven ниже 3.8.8. Такого не должно произойти,\nесли вы запускаете сборку из IDEA или через `mvnw`-скрипты.\n\nДалее будут перечислены другие полезные команды maven.\n\nЗапуск только компиляции основных классов:\n\n```shell\nmvn compile\n```\n\nЗапуск тестов:\n\n```shell\nmvn test\n```\n\nЗапуск линтеров:\n\n```shell\nmvn checkstyle:check modernizer:modernizer spotbugs:check pmd:check pmd:cpd-check\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacenko-developer%2Flog-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstacenko-developer%2Flog-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacenko-developer%2Flog-analyzer/lists"}