Этот проект представляет собой Telegram-бота, разработанного в рамках кейса от VK. Бот предназначен для мониторинга логов приложения, анализа их в реальном времени и отправки уведомлений о релевантных записях (например, ошибках) в чат.
Бот читает файл logs.log (генерируемый отдельным скриптом), фильтрует записи по регулярным выражениям из файла конфигурации, игнорирует нерелевантные и отправляет выбранные логи в Telegram-чат. Например, он может фокусироваться на ошибках с уровнем [ERROR] или конкретными сообщениями вроде "Invalid input received".
Проект реализован на Go с использованием открытых библиотек (telebot для Telegram API) и соответствует требованиям: анализ logs.log, фильтрация по конфигу, стабильная работа без искажений данных.
- cmd/ErrLogsBot/main.go: Точка входа, инициализация компонентов и graceful shutdown.
- internal/adapters/telegram_adapter.go: Адаптер для Telegram — обработка команд (/start, /stop), управление подписчиками (множественные пользователи с сохранением в JSON).
- internal/usecases/log_monitor.go: Бизнес-логика мониторинга — polling файла logs.log, фильтрация по regex и broadcast-отправка сообщений юзерам в чат.
- payload/log_generator.go: Генератор логов (исходный task.go модифицированный и доработанный), с очисткой файла по размеру/линиям.
- internal/config/config.go: Загрузка конфигурации (токен, фильтры из configs/filters.txt или дефолтные).
- internal/logger/logger.go: Настраиваемый логгер (text для dev, JSON для prod).
- internal/utils/escape_markdown.go: Утилита для экранирования MarkdownV2 в сообщениях.
Бот поддерживает множественных подписчиков: /start — подписка, /stop — отписка. Автоматическое удаление заблокировавших бота пользователей. Фильтрация логов по regex из конфига (дефолт: "ERROR", "Invalid input").
Стабильный мониторинг файла без fsnotify (polling каждые 500ms для надёжности). Graceful shutdown по сигналам (SIGINT, SIGTERM). Очистка logs.log для предотвращения роста (max 200 строк или 5MB). Безопасная работа: нет искажений данных, все операции синхронизированы (sync.Mutex/RWMutex).
Разработан с открытыми сервисами (Telegram API, Go stdlib). Анализирует logs.log из генератора. Отправляет только фильтрованные логи. Работает стабильно (тестировано локально и на деплое).
Проект задеплоен на Railway.app для 24/7 работы.
Бот доступен по ссылке: t.me/VKCase_ErrorLogsBot !ПОПРАВКА! Ныне недоступен, для проверки работы потребуется запускать локально!
git clone https://github.com/Noddened/VK-case-ErrLogsBot.git
cd ErrLogsBot
go mod tidy
# Создайте файл .env в корне:
BOT_TOKEN=your_bot_token_here_from_BotFather
ENV=development # или production для JSON-логов
# Опционально
# Создайте configs/filters.txt с regex (один на строку), например:
ERROR
Invalid input
# Сборка и запуск:
make run- Реализовать команду /filters для динамического изменения фильтров в чате юзера.
- Добавить тесты (unit/integration) для adapters, usecases и config.
- Улучшить архитектуру и модифицировать код для максимального быстродействия.