Logging & Debuggen

Betrouwbare logging is een van de kerncomponenten van de ByNinja Trading Bot-architectuur. Elke belangrijke actie in het systeem wordt vastgelegd, gestructureerd en in realtime doorgestuurd via de Telegram-integratie. Dit stelt handelaren in staat om de bot op afstand te monitoren, problemen direct te detecteren en complexe handelsscenario's te debuggen zonder directe servertoegang.

Het loggingsysteem is ontworpen rond drie hoofddoelen:

  • Realtime monitoring
  • Gedetailleerde foutdiagnostiek
  • Externe observeerbaarheid via Telegram

In tegenstelling tot basisimplementaties die alleen op de console werken, combineert de ByNinja-infrastructuur roterende bestandslogs, console-uitvoer, TCP-doorsturing en Telegram-levering in één uniforme monitoringpijplijn.


Logstructuur

De bot gebruikt een gecentraliseerde logarchitectuur gebaseerd op de loggingmodule van Python.

Elk logbericht volgt een gestandaardiseerde structuur:

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

De formattering omvat:

  • Tijdstempel
  • Loggernaam
  • Ernstniveau
  • Mensleesbaar bericht

Voorbeeld van formatteringsconfiguratie:

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

Deze structuur maakt logs eenvoudig te:

  • Doorzoeken
  • Parseren
  • Filteren
  • Analyseren
  • Doorsturen naar externe systemen

Het systeem gebruikt meerdere logniveaus:

NiveauDoel
DEBUGInterne uitvoeringsstroom
INFOHandelsacties en statusupdates
WARNINGVerdacht of onverwacht gedrag
ERRORHerstelbare fouten
CRITICALFatale systeemproblemen

Roterende Bestandslogs

De logger slaat logs automatisch op in roterende bestanden met behulp van RotatingFileHandler.

Kenmerken omvatten:

  • Automatische logpersistentie
  • Bestandsgrootte limieten
  • Historische back-ups
  • UTF-8-codering ondersteuning

Configuratie:

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

Dit voorkomt ongecontroleerde loggroei terwijl historische debuggegevens behouden blijven.

Het systeem bewaart:

  • Huidige actieve log
  • Maximaal 5 gearchiveerde logbestanden
  • 250 MB per bestand

Deze aanpak is vooral belangrijk voor langdurige handelssystemen die 24/7 continu opereren.


Realtime Telegram Logging

Een van de belangrijkste kenmerken van de ByNinja-infrastructuur is dat logs van de handelsbot automatisch in realtime naar de Telegram-bot worden doorgestuurd.

De architectuur werkt als volgt:

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

Elke belangrijke gebeurtenis gegenereerd door de handelsbot kan onmiddellijk verschijnen in het privé Telegram-kanaal of de chat.

Voorbeelden:

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

Dit geeft de operator direct inzicht in het systeem zonder SSH-toegang of server monitoring tools.

Het doorstuurmechanisme is geïmplementeerd via een aangepaste TCP-logging handler:

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

De Telegram-server ontvangt berichten via TCP en stuurt ze direct door naar de Telegram Bot API.

Dit transformeert Telegram effectief in een realtime extern monitoringdashboard voor de handelsengine.


Debugworkflow

De debugworkflow is ontworpen voor snelle isolatie van problemen en herstel.

Stap 1 — Detecteer het Probleem

De meeste problemen zijn onmiddellijk zichtbaar via Telegram-meldingen.

Voorbeeld:

Code
❌ Error starting TCP client: Connection refused

of:

Code
⚠️ Unknown message type

Omdat logs in realtime worden geleverd, kunnen problemen vaak binnen enkele seconden worden gedetecteerd.

Stap 2 — Inspecteer Gedetailleerde Logs

Wanneer dieper onderzoek nodig is, kunnen ontwikkelaars het volgende inspecteren:

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

De logs bieden chronologische uitvoeringssporen voor:

  • Strategiebeslissingen
  • Orderuitvoering
  • TCP-communicatie
  • Telegram-interacties
  • Persistentiebewerkingen
  • Afsluitgebeurtenissen

Stap 3 — Reproduceer het Scenario

Het DEBUG-niveau kan worden ingeschakeld om vast te leggen:

  • Interne toestandsovergangen
  • TCP-berichtenstroom
  • Commando-uitvoering
  • Thread-levenscyclus
  • Persistentiebewerkingen

Dit stelt ontwikkelaars in staat om moeilijke edge cases en race conditions te reproduceren.

Stap 4 — Traceer de Foutketen

Omdat elk subsysteem gecentraliseerde logging gebruikt, wordt het mogelijk om de exacte reeks gebeurtenissen te reconstrueren die tot een fout leidden.

Voorbeeldketen:

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

Dit is vooral nuttig in asynchrone multi-threaded systemen waar problemen ver weg van het zichtbare foutpunt kunnen ontstaan.


Foutopsporing

Het loggingsysteem is sterk gericht op gestructureerde foutopsporing.

Alle kritieke bewerkingen zijn verpakt in try/except-blokken met expliciete foutmeldingen:

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

Dit zorgt ervoor dat onverwachte fouten nooit stilzwijgend verdwijnen.

Het systeem traceert fouten over meerdere lagen:

LaagVoorbeeldfouten
Binance APIOrderafwijzing, time-out
TCP LaagVerbinding verloren
Telegram BotAPI-fouten
PersistentieBestandscorruptie
Strategie-engineOngeldige signalen
ThreadingDeadlocks of crashes

Pro Tip: Gebruik een Code-editor

Voor een veel betere ervaring bij het bewerken van configuratiebestanden, raden we aan een professionele code-editor zoals Visual Studio Code te gebruiken.

Download VS Code ↗

Logboekregistratie bij Correct Afsluiten

De bot logt ook afsluit- en herstelbewerkingen.

Voorbeeld:

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

Dit is uiterst belangrijk in handelsomgevingen omdat het bevestigt dat:

  • Posities zijn opgeslagen
  • Threads correct zijn gestopt
  • Openstaande bewerkingen zijn voltooid
  • Persistentie succesvol is leeggemaakt

Externe Bewerkingen via Telegram

De Telegram-integratie is niet beperkt tot passieve logs.

Dezelfde infrastructuur ondersteunt ook de uitvoering van externe commando's.

Voorbeelden:

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

Dit creëert een volledig externe operationele workflow:

  • Ontvang waarschuwingen in Telegram
  • Analyseer logs
  • Stuur herstelopdrachten
  • Monitor uitvoeringsresultaten

Allemaal zonder directe servertoegang.


Productiegerichte Monitoringsarchitectuur

De algehele logarchitectuur combineert verschillende productie-grade praktijken:

  • Gecentraliseerde logging
  • Gestructureerde formattering
  • Roterende logbestanden
  • Realtime externe meldingen
  • Multi-thread-veilige logging
  • TCP-logstreaming
  • Tracering van correct afsluiten
  • Externe operationele controle

Dit transformeert het logging-subsysteem van een eenvoudig debug-hulpprogramma naar een complete monitoring- en operationele infrastructuur voor geautomatiseerde cryptohandel.