mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-07 14:15:02 +00:00
8.2 KiB
8.2 KiB
Источники логов в проекте telegram_bot
1. Основной файл логов (bot.log)
- Расположение:
telegram_bot/bot.log - Конфигурация: Настроен в
config.pyв секции LOG_CONFIG - Формат: JSON (структурированные логи)
- Обработчики: Файловый обработчик с ротацией (до 5 файлов по 10MB)
- Уровень логирования: INFO по умолчанию
- Описание: Основной файл для хранения всех логов приложения, включая ошибки, предупреждения и информационные сообщения
2. Консольный вывод (stdout)
- Расположение: Консоль терминала при запуске
- Источники:
core/application.py- базовая настройка логирования с форматом '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s() - %(message)s'scheduler.py- логи планировщикаrun_production.py- логи продакшена с двойным выводом (файл + консоль)prometheus_server.py- логи сервера метрик
- Описание: Логи выводятся в реальном времени во время работы бота
3. CI/CD логи (GitHub Actions)
- Расположение:
.github/workflows/ci.yml - Содержимое:
- Вывод команд pytest при тестировании (
python -m pytest telegram_bot/test_utils/ -v --tb=short) - Вывод интеграционных тестов (
python -m pytest telegram_bot/test_integration/ -v --tb=short) - Логи компиляции Python (
python -m py_compile) - Вывод performance тестов с измерением времени выполнения
- Вывод команд pytest при тестировании (
- Описание: Логи автоматического тестирования и сборки в GitHub Actions
4. Логи в базе данных
- Расположение: Таблица в базе данных (через ErrorRepository)
- Источники:
handlers/user_handlers.py- логирование ошибок в базу данныхcore/exceptions.py- системные ошибки
- Описание: Критические ошибки сохраняются в базу данных для последующего анализа
5. Sentry интеграция
- Конфигурация: Настроен в
core/monitoring.py - Уровень: ERROR и выше
- Включение: Через LOG_CONFIG["enable_sentry"] = False по умолчанию
- Описание: Дистанционная система логирования ошибок для мониторинга production
6. Прометей метрики
- Расположение:
prometheus_server.py - Порт: 8000 по умолчанию
- Метрики: Статус бота, счетчики ошибок, время выполнения команд, активные пользователи
- Описание: Метрики производительности и здоровья системы
7. Логи тестов
- Расположение: Различные тестовые файлы (test_*.py)
- Источники:
test_monitoring_integration.py- тесты логированияtest_error_system.py- тестирование системы ошибокtest_moderation.py- логи модерацииsimple_test.py,final_test.py- интеграционные тесты
- Описание: Логи выполнения автоматических тестов с подробным выводом результатов
8. Специализированные логи сервисов
- UserService: Детальное логирование операций с пользователями (debug уровень)
- PaymentProvider: Логи платежных операций (Stripe, YooKassa, SBP)
- GameService: Логи игровых сессий
- NotificationService: Логи отправки уведомлений с повторными попытками
- TriggerService: Логи автоматизации
- DonationService: Логи платежей и донатов
- Middleware: Логи валидации, авторизации и метрик
9. Логи мониторинга и алертов
- Расположение:
core/alerts.py,core/monitoring.py - Типы: Системные алерты, метрики производительности
- Обработчики: Telegram уведомления, email, webhooks
- Описание: Логи системы мониторинга и оповещений
10. Логи ротации и архивации
- Расположение:
logs/директория (в продакшене) - Формат: Автоматическая ротация логов с backup_count = 5
- Описание: Архивные логи для долгосрочного хранения
Исправленные ошибки логирования
Дата исправления: 2025-10-29
1. Синтаксическая ошибка в core/application.py
- Ошибка: Отсутствовало тело функции
_handle_command_fallback - Исправление: Добавлено полное тело метода с обработкой исключений и fallback логики
- Статус: ✅ Исправлено
2. Ошибка импорта в core/single_instance.py
- Ошибка: Модуль
fcntlнедоступен на Windows - Исправление: Добавлен условный импорт с проверкой доступности модуля
- Статус: ✅ Исправлено
3. Ошибка async/await в services/user_service.py
- Ошибка: Синхронный метод
get_by_idвызывался сawait - Исправление: Использован правильный асинхронный метод
get_by_id_async - Статус: ✅ Исправлено
4. Синхронный вызов в handlers/user_handlers.py
- Ошибка: Метод
get_or_create_userвызывался синхронно в асинхронном контексте - Исправление: Добавлен оператор
await - Статус: ✅ Исправлено
5. Дублирующийся код в handlers/user_handlers.py
- Ошибка: Дублирование вызова в методе
_handle_donate - Исправление: Добавлен оператор
returnдля предотвращения дублирования - Статус: ✅ Исправлено
6. Ошибки таймаута в handlers/base_handler.py
- Ошибка: Необработанные таймауты Telegram API и устаревшие callback queries
- Исправление: Добавлена специальная обработка для ошибок таймаута и устаревших queries
- Статус: ✅ Исправлено
7. Ошибки в middleware
- Ошибка: Необработанные устаревшие queries в
core/middleware.py - Исправление: Добавлена специальная обработка для устаревших callback queries
- Статус: ✅ Исправлено
Результаты работ
- Все файлы компилируются без синтаксических ошибок
- Система логирования работает корректно
- Бот устойчив к сетевым таймаутам и устаревшим callback queries
- Улучшена обработка ошибок в middleware и обработчиках