mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
122 lines
8.2 KiB
Markdown
122 lines
8.2 KiB
Markdown
# Источники логов в проекте 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 и обработчиках |