Files
bottohelp/LOGGING_SOURCES.md

8.2 KiB
Raw Permalink Blame History

Источники логов в проекте 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 тестов с измерением времени выполнения
  • Описание: Логи автоматического тестирования и сборки в 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 и обработчиках