# Источники логов в проекте 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 и обработчиках