Logowanie i debugowanie
Niezawodne logowanie jest jednym z kluczowych komponentów architektury Bota transakcyjnego ByNinja. Każda ważna akcja wewnątrz systemu jest rejestrowana, strukturyzowana i przesyłana w czasie rzeczywistym przez integrację z Telegramem. Pozwala to handlowcom na zdalne monitorowanie bota, natychmiastowe wykrywanie problemów i debugowanie złożonych scenariuszy transakcyjnych bez bezpośredniego dostępu do serwera.
System logowania jest zaprojektowany wokół trzech głównych celów:
- •Monitorowanie w czasie rzeczywistym
- •Szczegółowa diagnostyka błędów
- •Zdalna obserwowalność przez Telegram
W przeciwieństwie do podstawowych implementacji tylko z konsolą, infrastruktura ByNinja łączy rotujące pliki logów, wyjście konsoli, przekazywanie TCP i dostarczanie przez Telegram w ujednoliconą sieć monitorowania.
Struktura logów
Bot używa scentralizowanej architektury logowania zbudowanej na module logowania Pythona.
Każda wiadomość logu ma ustandaryzowaną strukturę:
2026-05-19 14:32:11 - TradingBot - INFO - Opened BUY position BTCUSDTFormat zawiera:
- •Znacznik czasu
- •Nazwę loggera
- •Poziom ważności
- •Czytelną dla człowieka wiadomość
Przykładowa konfiguracja formatowania:
039;%(asctime)s - %(name)s - %(levelname)s - %(message)s039;Ta struktura sprawia, że logi są łatwe do:
- •Szukania
- •Parsowania
- •Filtrowania
- •Analizowania
- •Przekazywania do systemów zewnętrznych
System używa wielu poziomów logowania:
| Poziom | Cel |
|---|---|
| DEBUG | Wewnętrzny przepływ wykonania |
| INFO | Akcje transakcyjne i aktualizacje statusu |
| WARNING | Podejrzane lub nieoczekiwane zachowanie |
| ERROR | Odwracalne awarie |
| CRITICAL | Krytyczne problemy systemowe |
Rotujące pliki logów
Logger automatycznie przechowuje logi w rotujących plikach za pomocą RotatingFileHandler.
Funkcje obejmują:
- •Automatyczną trwałość logów
- •Limity rozmiaru pliku
- •Kopie zapasowe historii
- •Obsługę kodowania UTF-8
Konfiguracja:
RotatingFileHandler(
filename=self._log_file,
maxBytes=250*1024*1024,
backupCount=5,
encoding=039;utf-8039;
)Zapobiega to niekontrolowanemu wzrostowi logów, zachowując jednocześnie historyczne dane debugowania.
System przechowuje:
- •Bieżący aktywny log
- •Do 5 zarchiwizowanych plików logów
- •250 MB na plik
To podejście jest szczególnie ważne dla długo działających systemów transakcyjnych pracujących w trybie ciągłym 24/7.
Logowanie do Telegrama w czasie rzeczywistym
Jedną z kluczowych cech infrastruktury ByNinja jest to, że logi bota transakcyjnego są automatycznie przekazywane do bota Telegram w czasie rzeczywistym.
Architektura działa w ten sposób:
Trading Bot
↓
Python Logger
↓
TCP Log Handler
↓
TCP Client
↓
Telegram TCP Server
↓
Telegram Bot
↓
Telegram ChatKażde ważne zdarzenie wygenerowane przez bota transakcyjnego może natychmiast pojawić się w prywatnym kanale lub czacie Telegram.
Przykłady:
✅ Position opened
📈 Take profit executed
⚠️ API rate limit warning
❌ Binance order rejected
🛑 Emergency shutdown triggeredDaje to operatorowi natychmiastowy wgląd w system bez dostępu SSH lub narzędzi do monitorowania serwera.
Mechanizm przekazywania jest zaimplementowany za pomocą niestandardowego handlera logowania TCP:
tcp_handler = TCPLogHandler(tcp_manager)
logger.addHandler(tcp_handler)Serwer Telegram odbiera wiadomości przez TCP i przekazuje je bezpośrednio do API Bota Telegram.
Skutecznie przekształca to Telegram w pulpit zdalnego monitorowania silnika transakcyjnego w czasie rzeczywistym.
Przepływ debugowania
Przepływ debugowania jest zaprojektowany do szybkiej izolacji problemów i odzyskiwania.
Krok 1 — Wykryj problem
Większość problemów jest natychmiast widoczna przez powiadomienia Telegram.
Przykład:
❌ Error starting TCP client: Connection refusedlub:
⚠️ Unknown message typePonieważ logi są dostarczane w czasie rzeczywistym, problemy często można wykryć w ciągu kilku sekund.
Krok 2 — Sprawdź szczegółowe logi
Gdy wymagane jest głębsze dochodzenie, programiści mogą sprawdzić:
- •
trading.log - •
telegram_tcp.log - •
trading_tcp.log
Logi zapewniają chronologiczne ślady wykonania dla:
- •Decyzji strategicznych
- •Wykonania zleceń
- •Komunikacji TCP
- •Interakcji Telegram
- •Operacji trwałości
- •Zdarzeń zamknięcia
Krok 3 — Odtwórz scenariusz
Poziom DEBUG można włączyć, aby przechwycić:
- •Przejścia stanów wewnętrznych
- •Przepływ wiadomości TCP
- •Wykonanie poleceń
- •Cykl życia wątków
- •Operacje trwałości
Pozwala to programistom odtworzyć trudne przypadki brzegowe i warunki wyścigu.
Krok 4 — Śledź łańcuch awarii
Ponieważ każdy podsystem używa scentralizowanego logowania, możliwe staje się zrekonstruowanie dokładnej sekwencji zdarzeń prowadzących do awarii.
Przykładowy łańcuch:
Signal generated
→ Order request sent
→ Binance API timeout
→ Retry triggered
→ Risk manager warning
→ Position recovery activatedJest to szczególnie przydatne w asynchronicznych systemach wielowątkowych, gdzie problemy mogą pochodzić z daleka od widocznego punktu awarii.
Śledzenie błędów
System logowania jest w dużym stopniu skoncentrowany na strukturalnym śledzeniu błędów.
Wszystkie krytyczne operacje są owinięte w bloki try/except z jawnym raportowaniem błędów:
except Exception as e:
logger.error(f"❌ Critical error: {e}")Zapewnia to, że nieoczekiwane awarie nigdy nie znikają po cichu.
System śledzi błędy w wielu warstwach:
| Warstwa | Przykładowe błędy |
|---|---|
| API Binance | Odrzucenie zlecenia, timeout |
| Warstwa TCP | Utrata połączenia |
| Bot Telegram | Awarie API |
| Trwałość | Uszkodzenie pliku |
| Silnik strategii | Nieprawidłowe sygnały |
| Wielowątkowość | Zakleszczenia lub awarie |
Profesjonalna wskazówka: Użyj edytora kodu
Dla znacznie lepszego doświadczenia podczas edycji plików konfiguracyjnych zalecamy użycie profesjonalnego edytora kodu, takiego jak Visual Studio Code.
Download VS Code ↗Logowanie łagodnego zamykania
Bot rejestruje również operacje zamykania i odzyskiwania.
Przykład:
🛑 Shutdown signal received...
✅ PersistentMap stopped
💾 Forcing save to disk...Jest to niezwykle ważne w środowiskach transakcyjnych, ponieważ potwierdza, że:
- •Pozycje zostały zapisane
- •Wątki zatrzymały się poprawnie
- •Oczekujące operacje zostały zakończone
- •Trwałość została pomyślnie opróżniona
Zdalne operacje przez Telegram
Integracja z Telegramem nie ogranicza się do pasywnych logów.
Ta sama infrastruktura obsługuje również zdalne wykonywanie poleceń.
Przykłady:
/starttrading
/stoptrading
/getstatus
/getstats
/buy BTCUSDT
/sell ETHUSDTTworzy to w pełni zdalny przepływ operacyjny:
- •Odbieraj alerty w Telegramie
- •Analizuj logi
- •Wysyłaj polecenia odzyskiwania
- •Monitoruj wyniki wykonania
Wszystko bez bezpośredniego dostępu do serwera.
Architektura monitorowania zorientowana na produkcję
Ogólna architektura logowania łączy kilka praktyk klasy produkcyjnej:
- •Scentralizowane logowanie
- •Strukturalne formatowanie
- •Rotujące pliki logów
- •Powiadomienia zdalne w czasie rzeczywistym
- •Logowanie bezpieczne dla wielowątkowości
- •Przesyłanie strumieniowe logów TCP
- •Śledzenie łagodnego zamykania
- •Zdalna kontrola operacyjna
Przekształca to podsystem logowania z prostego narzędzia debugowania w kompletną infrastrukturę monitorowania i operacyjną dla zautomatyzowanego handlu kryptowalutami.