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