Консольная утилита на C++23 для статистического анализа текстовых лог-файлов. Сканирует директорию, считает строки, слова и символы, строит частотный словарь, ищет ключевые слова и выводит результаты в консоль или в JSON.
| Платформа | Пакет |
|---|---|
| log_analyzer_0.2.0_amd64.deb | |
| log_analyzer-0.2.0-1.x86_64.rpm |
- Рекурсивный обход директории — находит все файлы с расширениями
.logи.txt - Подсчёт строк, слов и символов для каждого файла и суммарно
- Частотный словарь слов (топ-10 в консольном отчёте, полный список в JSON)
- Поиск произвольных ключевых слов с подсчётом совпадений
- Консольный отчёт с сводной таблицей по каждому файлу
- Экспорт полного отчёта в JSON (библиотека glaze)
- Покрытие юнит-тестами через GoogleTest (8 наборов тестов)
- Поддержка Address Sanitizer / UBSan в режиме Debug
| Инструмент | Минимальная версия |
|---|---|
| GCC / Clang | C++23 (GCC 15, Clang 17+) |
| CMake | 3.31 |
| Conan | 2.x |
./scripts/create_env.sh DebugСкрипт устанавливает зависимости через Conan и генерирует CMakeUserPresets.json.
На Fedora автоматически применяются профили Fedora-Debug / Fedora-Release.
Для Release-сборки:
./scripts/create_env.sh Releasecmake --preset conan-debug
cmake --build buildДля Release:
cmake --preset conan-release
cmake --build build./build/log_analyzer <директория> [--keywords слово1,слово2,...] [--json <путь>] [--threads <N>]По умолчанию анализ выполняется в одном потоке. Для параллельного анализа файлов
используйте --threads <N>.
Примеры:
# Проанализировать директорию logs/
./build/log_analyzer logs/
# Искать ключевые слова "error" и "warning", сохранить JSON
./build/log_analyzer logs/ --keywords error,warning --json report.json
# Параллельный анализ в 8 потоков
./build/log_analyzer logs/ --threads 8
# Параллельный анализ + ключевые слова + JSON
./build/log_analyzer logs/ --keywords error,warning --threads 8 --json report.json| Аргумент | Обязателен | Описание |
|---|---|---|
<root_dir> |
Да | Корневая директория для сканирования |
--keywords word1,word2,... |
Нет | Список ключевых слов через запятую (без пробелов) |
--json <path> |
Нет | Путь к выходному JSON-файлу |
--threads <N> |
Нет | Количество потоков для параллельного анализа файлов |
=== Log Analyzer Report ===
----------------------------------------
Files analyzed : 3
Total lines : 1024
Total words : 8743
Total chars : 61200
----------------------------------------
--- Top 10 words ---
error: 142
warning: 98
info: 76
...
--- Keyword hits ---
error: 142
warning: 98
--- Per-file stats ---
logs/app.log lines=512 words=4200 chars=30100
logs/system.log lines=300 words=2800 chars=20500
logs/debug.log lines=212 words=1743 chars=10600
CLI args → FileScanner → (single-thread: FileAnalyzer ×N → Aggregator)
→ (multi-thread: ThreadPool(N) → FileAnalyzer ×N → ThreadSafeAggregator)
↓
ConsoleReport
└→ JsonReport
FileScanner— рекурсивно находит.log/.txtфайлыFileAnalyzer— читает файл построчно, токенизирует черезTokenizer, собираетFileStatsAggregator— суммирует всеFileStatsвTotalStatsв однопоточном режимеThreadPool+ThreadSafeAggregator— выполняют параллельный анализ и потокобезопасную агрегацию при использовании--threadsConsoleReport— печатает сводку вstd::ostreamJsonReport— сериализуетTotalStatsв JSON через glaze
Через скрипт (запуск тестовых бинарников напрямую, без ctest):
./scripts/run_tests.sh
# Показать список тестов:
./scripts/run_tests.sh --list
# Запустить только часть тестов по gtest-фильтру:
./scripts/run_tests.sh --filter "*Cli*:*Parser*"Наборы тестов: Test_FileScanner, Test_Parser, Test_FileAnalyzer, Test_Aggregator, Test_ConsoleReport, Test_JsonReport, Test_Cli, Test_App.
cmake --preset conan-debug -DLOG_ANALYZER_ENABLE_SANITIZERS=ON
cmake --build buildВключается только для Debug-сборок на GCC/Clang. Перед включением автоматически проверяется поддержка компилятора.
./scripts/check_tidy.sh --build-type Debug
# Автоматически исправить предупреждения:
./scripts/check_tidy.sh --build-type Debug --fix# Применить форматирование ко всем файлам src/ и tests/:
./scripts/fix_style.sh
# Только показать список файлов без изменений:
./scripts/fix_style.sh --list./scripts/clean.sh| Библиотека | Версия | Назначение |
|---|---|---|
| glaze | 7.4.0 | JSON-сериализация |
| GoogleTest | 1.17.0 | Юнит-тестирование |
Зависимости управляются через Conan 2 и не требуют ручной установки.