Логування та налагодження
Надійне логування є одним із ключових компонентів архітектури ByNinja Trading Bot. Кожна важлива дія всередині системи реєструється, структурується та пересилається в реальному часі через інтеграцію з Telegram. Це дозволяє трейдерам віддалено моніторити бота, миттєво виявляти проблеми та налагоджувати складні торгові сценарії без прямого доступу до сервера.
Система логування розроблена для досягнення трьох основних цілей:
- •Моніторинг у реальному часі
- •Детальна діагностика помилок
- •Віддалене спостереження через Telegram
На відміну від базових реалізацій лише для консолі, інфраструктура ByNinja об'єднує ротаційні файлові логи, виведення в консоль, пересилання по TCP та доставку в Telegram у єдиний конвеєр моніторингу.
Структура логів
Бот використовує централізовану архітектуру логування, побудовану на основі модуля Python logging.
Кожне повідомлення логу дотримується стандартизованої структури:
2026-05-19 14:32:11 - TradingBot - INFO - Opened BUY position BTCUSDTФорматер включає:
- •Часову мітку
- •Ім'я логера
- •Рівень серйозності
- •Зрозуміле для людини повідомлення
Приклад конфігурації форматера:
039;%(asctime)s - %(name)s - %(levelname)s - %(message)s039;Ця структура робить логи зручними для:
- •Пошуку
- •Парсингу
- •Фільтрації
- •Аналізу
- •Пересилання до зовнішніх систем
Система використовує кілька рівнів логування:
| Рівень | Призначення |
|---|---|
| DEBUG | Внутрішній потік виконання |
| INFO | Торгові дії та оновлення статусу |
| WARNING | Підозріла або неочікувана поведінка |
| ERROR | Помилки, що підлягають відновленню |
| CRITICAL | Критичні системні проблеми |
Ротаційні файлові логи
Логер автоматично зберігає логи в файли, що ротуються, використовуючи RotatingFileHandler.
Функції включають:
- •Автоматичне збереження логів
- •Обмеження розміру файлу
- •Історичні резервні копії
- •Підтримку кодування UTF-8
Конфігурація:
RotatingFileHandler(
filename=self._log_file,
maxBytes=250*1024*1024,
backupCount=5,
encoding=039;utf-8039;
)Це запобігає неконтрольованому зростанню логів, зберігаючи при цьому історичні дані для налагодження.
Система зберігає:
- •Поточний активний лог
- •До 5 заархівованих файлів логів
- •250 МБ на файл
Цей підхід є особливо важливим для довгострокових торгових систем, що працюють безперервно 24/7.
Логування в Telegram у реальному часі
Однією з ключових особливостей інфраструктури ByNinja є те, що логи торгового бота автоматично пересилаються в Telegram бот у реальному часі.
Архітектура працює так:
Trading Bot
↓
Python Logger
↓
TCP Log Handler
↓
TCP Client
↓
Telegram TCP Server
↓
Telegram Bot
↓
Telegram ChatКожна важлива подія, згенерована торговим ботом, може миттєво з'являтися у приватному Telegram каналі або чаті.
Приклади:
✅ Position opened
📈 Take profit executed
⚠️ API rate limit warning
❌ Binance order rejected
🛑 Emergency shutdown triggeredЦе дає оператору миттєву видимість системи без доступу по SSH або інструментів моніторингу сервера.
Механізм пересилання реалізовано через спеціальний TCP-обробник логів:
tcp_handler = TCPLogHandler(tcp_manager)
logger.addHandler(tcp_handler)Сервер Telegram отримує повідомлення через TCP і пересилає їх безпосередньо в Telegram Bot API.
Це фактично перетворює Telegram на панель віддаленого моніторингу торгового ядра в реальному часі.
Процес налагодження
Робочий процес налагодження призначений для швидкого ізолювання проблем та відновлення.
Крок 1 — Виявлення проблеми
Більшість проблем одразу видно через сповіщення в Telegram.
Приклад:
❌ Error starting TCP client: Connection refusedабо:
⚠️ Unknown message typeОскільки логи доставляються в реальному часі, проблеми часто можна виявити за лічені секунди.
Крок 2 — Перевірка детальних логів
Коли потрібне глибше розслідування, розробники можуть перевірити:
- •
trading.log - •
telegram_tcp.log - •
trading_tcp.log
Логи надають хронологічні сліди виконання для:
- •Стратегічних рішень
- •Виконання ордерів
- •TCP комунікації
- •Взаємодії з Telegram
- •Операцій збереження
- •Подій завершення роботи
Крок 3 — Відтворення сценарію
Рівень DEBUG може бути увімкнений для запису:
- •Внутрішніх переходів станів
- •Потоку повідомлень TCP
- •Виконання команд
- •Життєвого циклу потоків
- •Операцій збереження
Це дозволяє розробникам відтворювати складні крайові випадки та стани гонитви.
Крок 4 — Відстеження ланцюжка збоїв
Оскільки кожна підсистема використовує централізоване логування, стає можливим відновити точну послідовність подій, що призвели до збою.
Приклад ланцюжка:
Signal generated
→ Order request sent
→ Binance API timeout
→ Retry triggered
→ Risk manager warning
→ Position recovery activatedЦе особливо корисно в асинхронних багатопотокових системах, де проблеми можуть виникати далеко від видимої точки збою.
Відстеження помилок
Система логування сильно орієнтована на структуроване відстеження помилок.
Усі критичні операції обгорнуті в блоки try/except з явним повідомленням про помилку:
except Exception as e:
logger.error(f"❌ Critical error: {e}")Це гарантує, що неочікувані збої ніколи мовчки не зникнуть.
Система відстежує помилки на кількох рівнях:
| Рівень | Приклади помилок |
|---|---|
| API Binance | Відхилення ордера, тайм-аут |
| TCP-рівень | Втрата з'єднання |
| Telegram бот | Збої API |
| Збереження | Пошкодження файлу |
| Стратегічне ядро | Недійсні сигнали |
| Потоки | Взаємне блокування або збої |
Порада: Використовуйте редактор коду
Для зручнішого редагування конфігураційних файлів ми рекомендуємо використовувати професійний редактор коду, наприклад Visual Studio Code.
Download VS Code ↗Логування безпечного завершення роботи
Бот також логує операції завершення роботи та відновлення.
Приклад:
🛑 Shutdown signal received...
✅ PersistentMap stopped
💾 Forcing save to disk...Це надзвичайно важливо в торговельних середовищах, оскільки це підтверджує, що:
- •Позиції були збережені
- •Потоки зупинилися коректно
- •Очікувані операції завершилися
- •Дані успішно скинуті на диск
Віддалені операції через Telegram
Інтеграція з Telegram не обмежується пасивними логами.
Та ж сама інфраструктура також підтримує віддалене виконання команд.
Приклади:
/starttrading
/stoptrading
/getstatus
/getstats
/buy BTCUSDT
/sell ETHUSDTЦе створює повністю віддалений операційний робочий процес:
- •Отримуйте сповіщення в Telegram
- •Аналізуйте логи
- •Надсилайте команди на відновлення
- •Контролюйте результати виконання
Усе це без прямого доступу до сервера.
Архітектура моніторингу, орієнтована на продакшн
Загальна архітектура логування поєднує в собі кілька практик рівня продакшн:
- •Централізоване логування
- •Структуроване форматування
- •Ротаційні файли логів
- •Віддалені сповіщення в реальному часі
- •Багатопотоково-безпечне логування
- •TCP-стрімінг логів
- •Відстеження безпечного завершення роботи
- •Віддалений оперативний контроль
Це перетворює підсистему логування з простої утиліти для налагодження на повноцінну інфраструктуру моніторингу та управління для автоматизованої криптоторгівлі.