Files
bottohelp/LOGGING_SOURCES.md
T

122 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Источники логов в проекте 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 и обработчиках