Protokollierung & Debugging

Zuverlässige Protokollierung ist eine der Kernkomponenten der ByNinja Trading Bot-Architektur. Jede wichtige Aktion im System wird aufgezeichnet, strukturiert und in Echtzeit über die Telegram-Integration weitergeleitet. Dies ermöglicht es Händlern, den Bot aus der Ferne zu überwachen, Probleme sofort zu erkennen und komplexe Handelsszenarien ohne direkten Serverzugriff zu debuggen.

Das Protokollierungssystem ist um drei Hauptziele herum konzipiert:

  • Echtzeit-Überwachung
  • Detaillierte Fehlerdiagnose
  • Fernbeobachtbarkeit über Telegram

Im Gegensatz zu einfachen Konsolenimplementierungen kombiniert die ByNinja-Infrastruktur rotierende Dateiprotokolle, Konsolenausgabe, TCP-Weiterleitung und Telegram-Zustellung zu einer einheitlichen Überwachungspipeline.


Log-Struktur

Der Bot verwendet eine zentralisierte Protokollierungsarchitektur, die auf dem Logging-Modul von Python basiert.

Jede Protokollnachricht folgt einer standardisierten Struktur:

Code
2026-05-19 14:32:11 - TradingBot - INFO - Opened BUY position BTCUSDT

Der Formatierer enthält:

  • Zeitstempel
  • Logger-Name
  • Schweregradstufe
  • Menschlich lesbare Nachricht

Beispielkonfiguration des Formatierers:

Code
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'

Diese Struktur macht Protokolle einfach zu:

  • Durchsuchen
  • Parsen
  • Filtern
  • Analysieren
  • An externe Systeme weiterleiten

Das System verwendet mehrere Protokollierungsstufen:

StufeZweck
DEBUGInterner Ausführungsablauf
INFOHandelsaktionen und Statusaktualisierungen
WARNINGVerdächtiges oder unerwartetes Verhalten
ERRORBehebbare Fehler
CRITICALFatale Systemprobleme

Rotierende Dateiprotokolle

Der Logger speichert Protokolle automatisch in rotierenden Dateien mit dem RotatingFileHandler.

Zu den Funktionen gehören:

  • Automatische Protokollpersistenz
  • Dateigrößenbegrenzungen
  • Historische Sicherungskopien
  • UTF-8-Kodierungsunterstützung

Konfiguration:

Code
RotatingFileHandler(
    filename=self._log_file,
    maxBytes=250*1024*1024,
    backupCount=5,
    encoding='utf-8'
)

Dies verhindert unkontrolliertes Protokollwachstum und bewahrt gleichzeitig historische Debugging-Daten.

Das System behält:

  • Aktuelles aktives Protokoll
  • Bis zu 5 archivierte Protokolldateien
  • 250 MB pro Datei

Dieser Ansatz ist besonders wichtig für lang laufende Handelssysteme, die 24/7 kontinuierlich arbeiten.


Echtzeit-Telegram-Protokollierung

Eines der Hauptmerkmale der ByNinja-Infrastruktur ist, dass Handelsbot-Protokolle automatisch in Echtzeit an den Telegram-Bot weitergeleitet werden.

Die Architektur funktioniert wie folgt:

Code
Trading Bot
    ↓
Python Logger
    ↓
TCP Log Handler
    ↓
TCP Client
    ↓
Telegram TCP Server
    ↓
Telegram Bot
    ↓
Telegram Chat

Jedes wichtige Ereignis, das vom Handelsbot generiert wird, kann sofort im privaten Telegram-Kanal oder -Chat erscheinen.

Beispiele:

Code
✅ Position opened
📈 Take profit executed
⚠️ API rate limit warning
❌ Binance order rejected
🛑 Emergency shutdown triggered

Dies gibt dem Betreiber sofortige Einblicke in das System ohne SSH-Zugriff oder Server-Überwachungstools.

Der Weiterleitungsmechanismus wird über einen benutzerdefinierten TCP-Logging-Handler implementiert:

Code
tcp_handler = TCPLogHandler(tcp_manager)
logger.addHandler(tcp_handler)

Der Telegram-Server empfängt Nachrichten über TCP und leitet sie direkt an die Telegram Bot API weiter.

Dies verwandelt Telegram effektiv in ein Echtzeit-Fernüberwachungsdashboard für die Handelsengine.


Debug-Workflow

Der Debugging-Workflow ist für eine schnelle Problemisolierung und -behebung ausgelegt.

Schritt 1 — Problem erkennen

Die meisten Probleme sind sofort über Telegram-Benachrichtigungen sichtbar.

Beispiel:

Code
❌ Error starting TCP client: Connection refused

oder:

Code
⚠️ Unknown message type

Da Protokolle in Echtzeit geliefert werden, können Probleme oft innerhalb von Sekunden erkannt werden.

Schritt 2 — Detaillierte Protokolle einsehen

Wenn eine tiefere Untersuchung erforderlich ist, können Entwickler einsehen:

  • trading.log
  • telegram_tcp.log
  • trading_tcp.log

Die Protokolle liefern chronologische Ausführungsabläufe für:

  • Strategieentscheidungen
  • Orderausführung
  • TCP-Kommunikation
  • Telegram-Interaktionen
  • Persistenzoperationen
  • Herunterfahrereignisse

Schritt 3 — Szenario reproduzieren

Die DEBUG-Stufe kann aktiviert werden, um zu erfassen:

  • Interne Zustandsübergänge
  • TCP-Nachrichtenfluss
  • Befehlsausführung
  • Thread-Lebenszyklus
  • Persistenzoperationen

Dies ermöglicht es Entwicklern, schwierige Randfälle und Race Conditions zu reproduzieren.

Schritt 4 — Fehlerkette verfolgen

Da jedes Subsystem eine zentralisierte Protokollierung verwendet, wird es möglich, die genaue Ereignisfolge zu rekonstruieren, die zu einem Fehler führte.

Beispielkette:

Code
Signal generated
→ Order request sent
→ Binance API timeout
→ Retry triggered
→ Risk manager warning
→ Position recovery activated

Dies ist besonders nützlich in asynchronen Multithread-Systemen, bei denen Probleme weit entfernt vom sichtbaren Fehlerpunkt entstehen können.


Fehlerverfolgung

Das Protokollierungssystem ist stark auf strukturierte Fehlerverfolgung ausgerichtet.

Alle kritischen Operationen sind in try/except-Blöcke mit expliziter Fehlerberichterstattung eingeschlossen:

Code
except Exception as e:
    logger.error(f"❌ Critical error: {e}")

Dies stellt sicher, dass unerwartete Fehler niemals stillschweigend verschwinden.

Das System verfolgt Fehler über mehrere Ebenen hinweg:

EbeneBeispielfehler
Binance APIOrderablehnung, Timeout
TCP-EbeneVerbindungsverlust
Telegram BotAPI-Fehler
PersistenzDateibeschädigung
Strategie-EngineUngültige Signale
ThreadingDeadlocks oder Abstürze

Pro-Tipp: Verwenden Sie einen Code-Editor

Für eine viel bessere Erfahrung beim Bearbeiten von Konfigurationsdateien empfehlen wir die Verwendung eines professionellen Code-Editors wie Visual Studio Code.

Download VS Code ↗

Protokollierung des kontrollierten Herunterfahrens

Der Bot protokolliert auch Herunterfahr- und Wiederherstellungsoperationen.

Beispiel:

Code
🛑 Shutdown signal received...
✅ PersistentMap stopped
💾 Forcing save to disk...

Dies ist in Handelsumgebungen äußerst wichtig, da es bestätigt, dass:

  • Positionen gespeichert wurden
  • Threads korrekt gestoppt wurden
  • Ausstehende Operationen abgeschlossen wurden
  • Persistenz erfolgreich geleert wurde

Fernoperationen über Telegram

Die Telegram-Integration beschränkt sich nicht auf passive Protokolle.

Dieselbe Infrastruktur unterstützt auch die Ausführung von Fernbefehlen.

Beispiele:

Code
/starttrading
/stoptrading
/getstatus
/getstats
/buy BTCUSDT
/sell ETHUSDT

Dies schafft einen vollständig remoteen Betriebsablauf:

  • Alarme in Telegram erhalten
  • Protokolle analysieren
  • Wiederherstellungsbefehle senden
  • Ausführungsergebnisse überwachen

Alles ohne direkten Serverzugriff.


Produktionsorientierte Überwachungsarchitektur

Die gesamte Protokollierungsarchitektur kombiniert mehrere produktionsreife Praktiken:

  • Zentralisierte Protokollierung
  • Strukturierte Formatierung
  • Rotierende Protokolldateien
  • Echtzeit-Fernbenachrichtigungen
  • Multithread-sichere Protokollierung
  • TCP-Protokoll-Streaming
  • Kontrollierte Herunterfahrverfolgung
  • Fernbetriebliche Steuerung

Dies verwandelt das Protokollierungs-Subsystem von einem einfachen Debugging-Dienstprogramm in eine vollständige Überwachungs- und Betriebsinfrastruktur für automatisierten Krypto-Handel.