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:
2026-05-19 14:32:11 - TradingBot - INFO - Opened BUY position BTCUSDTDe formattering omvat:
- •Tijdstempel
- •Loggernaam
- •Ernstniveau
- •Mensleesbaar bericht
Voorbeeld van formatteringsconfiguratie:
039;%(asctime)s - %(name)s - %(levelname)s - %(message)s039;Deze structuur maakt logs eenvoudig te:
- •Doorzoeken
- •Parseren
- •Filteren
- •Analyseren
- •Doorsturen naar externe systemen
Het systeem gebruikt meerdere logniveaus:
| Niveau | Doel |
|---|---|
| DEBUG | Interne uitvoeringsstroom |
| INFO | Handelsacties en statusupdates |
| WARNING | Verdacht of onverwacht gedrag |
| ERROR | Herstelbare fouten |
| CRITICAL | Fatale 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:
RotatingFileHandler(
filename=self._log_file,
maxBytes=250*1024*1024,
backupCount=5,
encoding=039;utf-8039;
)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:
Trading Bot
↓
Python Logger
↓
TCP Log Handler
↓
TCP Client
↓
Telegram TCP Server
↓
Telegram Bot
↓
Telegram ChatElke belangrijke gebeurtenis gegenereerd door de handelsbot kan onmiddellijk verschijnen in het privé Telegram-kanaal of de chat.
Voorbeelden:
✅ Position opened
📈 Take profit executed
⚠️ API rate limit warning
❌ Binance order rejected
🛑 Emergency shutdown triggeredDit 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:
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:
❌ Error starting TCP client: Connection refusedof:
⚠️ Unknown message typeOmdat 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:
Signal generated
→ Order request sent
→ Binance API timeout
→ Retry triggered
→ Risk manager warning
→ Position recovery activatedDit 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:
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:
| Laag | Voorbeeldfouten |
|---|---|
| Binance API | Orderafwijzing, time-out |
| TCP Laag | Verbinding verloren |
| Telegram Bot | API-fouten |
| Persistentie | Bestandscorruptie |
| Strategie-engine | Ongeldige signalen |
| Threading | Deadlocks 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:
🛑 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:
/starttrading
/stoptrading
/getstatus
/getstats
/buy BTCUSDT
/sell ETHUSDTDit 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.