Günlükleme ve Hata Ayıklama

Güvenilir günlükleme, ByNinja Trading Bot mimarisinin temel bileşenlerinden biridir. Sistem içindeki her önemli eylem kaydedilir, yapılandırılır ve Telegram entegrasyonu aracılığıyla gerçek zamanlı olarak iletilir. Bu, tüccarların botu uzaktan izlemesine, sorunları anında tespit etmesine ve doğrudan sunucu erişimi olmadan karmaşık trading senaryolarında hata ayıklamasına olanak tanır.

Günlükleme sistemi üç ana hedef etrafında tasarlanmıştır:

  • Gerçek zamanlı izleme
  • Ayrıntılı hata teşhisi
  • Telegram aracılığıyla uzaktan gözlemlenebilirlik

Temel konsol-only uygulamalarının aksine, ByNinja altyapısı, dönen dosya günlükleri, konsol çıktısı, TCP iletimi ve Telegram teslimatını birleşik bir izleme hattında birleştirir.


Günlük Yapısı

Bot, Python'ın logging modülü üzerine inşa edilmiş merkezi bir günlükleme mimarisi kullanır.

Her günlük mesajı standartlaştırılmış bir yapıyı takip eder:

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

Biçimlendirici şunları içerir:

  • Zaman damgası
  • Günlükçü adı
  • Şiddet seviyesi
  • İnsan tarafından okunabilir mesaj

Örnek biçimlendirici yapılandırması:

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

Bu yapı, günlükleri şunlar için kolaylaştırır:

  • Arama
  • Ayrıştırma
  • Filtreleme
  • Analiz
  • Harici sistemlere iletme

Sistem birden çok günlük seviyesi kullanır:

SeviyeAmaç
DEBUGİç yürütme akışı
INFOTrading eylemleri ve durum güncellemeleri
WARNINGŞüpheli veya beklenmeyen davranış
ERRORKurtarılabilir hatalar
CRITICALKritik sistem sorunları

Dönen Dosya Günlükleri

Günlükçü, RotatingFileHandler kullanarak günlükleri otomatik olarak dönen dosyalara kaydeder.

Özellikler şunları içerir:

  • Otomatik günlük kalıcılığı
  • Dosya boyutu limitleri
  • Geçmiş yedekleri
  • UTF-8 kodlama desteği

Yapılandırma:

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

Bu, kontrolsüz günlük büyümesini önlerken tarihsel hata ayıklama verilerini korur.

Sistem şunları saklar:

  • Mevcut aktif günlük
  • 5'e kadar arşivlenmiş günlük dosyası
  • Dosya başına 250 MB

Bu yaklaşım, 7/24 sürekli çalışan uzun süreli trading sistemleri için özellikle önemlidir.


Gerçek Zamanlı Telegram Günlükleme

ByNinja altyapısının en önemli özelliklerinden biri, trading botu günlüklerinin gerçek zamanlı olarak otomatik olarak Telegram botuna iletilmesidir.

Mimari şu şekilde çalışır:

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

Trading botu tarafından oluşturulan her önemli olay, anında özel Telegram kanalında veya sohbetinde görünebilir.

Örnekler:

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

Bu, operatöre SSH erişimi veya sunucu izleme araçları olmadan sisteme anında görünürlük sağlar.

İletme mekanizması, özel bir TCP günlük işleyicisi aracılığıyla uygulanır:

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

Telegram sunucusu, mesajları TCP aracılığıyla alır ve doğrudan Telegram Bot API'sine iletir.

Bu, Telegram'ı trading motoru için gerçek zamanlı bir uzaktan izleme panosuna etkili bir şekilde dönüştürür.


Hata Ayıklama İş Akışı

Hata ayıklama iş akışı, hızlı sorun izolasyonu ve kurtarma için tasarlanmıştır.

Adım 1 — Sorunu Tespit Edin

Çoğu sorun, Telegram bildirimleri aracılığıyla hemen görünür.

Örnek:

Code
❌ Error starting TCP client: Connection refused

veya:

Code
⚠️ Unknown message type

Günlükler gerçek zamanlı olarak teslim edildiğinden, sorunlar genellikle saniyeler içinde tespit edilebilir.

Adım 2 — Ayrıntılı Günlükleri İnceleyin

Daha derin bir araştırma gerektiğinde, geliştiriciler şunları inceleyebilir:

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

Günlükler şunlar için kronolojik yürütme izleri sağlar:

  • Strateji kararları
  • Emir yürütme
  • TCP iletişimi
  • Telegram etkileşimleri
  • Kalıcılık işlemleri
  • Kapanış olayları

Adım 3 — Senaryoyu Yeniden Oluşturun

Hata Ayıklama (DEBUG) seviyesi şunları yakalamak için etkinleştirilebilir:

  • İç durum geçişleri
  • TCP mesaj akışı
  • Komut yürütme
  • İş parçacığı yaşam döngüsü
  • Kalıcılık işlemleri

Bu, geliştiricilerin zor uç durumları ve yarış koşullarını yeniden oluşturmasını sağlar.

Adım 4 — Hata Zincirini İzleyin

Her alt sistem merkezi günlükleme kullandığından, bir hataya yol açan olayların tam sırasını yeniden yapılandırmak mümkün hale gelir.

Örnek zincir:

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

Bu, özellikle sorunların görünür hata noktasından çok uzakta kaynaklanabileceği eşzamansız çoklu iş parçacıklı sistemlerde kullanışlıdır.


Hata İzleme

Günlükleme sistemi, büyük ölçüde yapılandırılmış hata izlemeye odaklanmıştır.

Tüm kritik işlemler, açık hata bildirimi ile try/except bloklarına sarılır:

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

Bu, beklenmeyen hataların asla sessizce kaybolmamasını sağlar.

Sistem, hataları birden çok katmanda izler:

KatmanÖrnek Hatalar
Binance APIEmir reddi, zaman aşımı
TCP KatmanıBağlantı kaybı
Telegram BotuAPI hataları
KalıcılıkDosya bozulması
Strateji MotoruGeçersiz sinyaller
İş ParçacığıKilitlenmeler veya çökmeler

Pro İpucu: Bir Kod Editörü Kullanın

Yapılandırma dosyalarını düzenlerken çok daha iyi bir deneyim için Visual Studio Code gibi profesyonel bir kod editörü kullanmanızı öneririz.

Download VS Code ↗

Düzgün Kapanış Günlüklemesi

Bot ayrıca kapanış ve kurtarma işlemlerini de günlükler.

Örnek:

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

Bu, trading ortamlarında son derece önemlidir çünkü şunları doğrular:

  • Pozisyonlar kaydedildi
  • İş parçacıkları doğru durdu
  • Bekleyen işlemler tamamlandı
  • Kalıcılık başarıyla temizlendi

Telegram Üzerinden Uzaktan İşlemler

Telegram entegrasyonu pasif günlüklerle sınırlı değildir.

Aynı altyapı, uzaktan komut yürütmeyi de destekler.

Örnekler:

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

Bu, tamamen uzaktan bir operasyonel iş akışı oluşturur:

  • Telegram'da uyarıları alın
  • Günlükleri analiz edin
  • Kurtarma komutları gönderin
  • Yürütme sonuçlarını izleyin

Tüm bunlar doğrudan sunucu erişimi olmadan.


Üretime Yönelik İzleme Mimarisi

Genel günlükleme mimarisi, birkaç üretim sınıfı uygulamayı birleştirir:

  • Merkezi günlükleme
  • Yapılandırılmış biçimlendirme
  • Dönen günlük dosyaları
  • Gerçek zamanlı uzaktan bildirimler
  • Çoklu iş parçacığı güvenli günlükleme
  • TCP günlük akışı
  • Düzgün kapanış izleme
  • Uzaktan operasyonel kontrol

Bu, günlükleme alt sistemini basit bir hata ayıklama yardımcı programından, otomatik kripto ticareti için eksiksiz bir izleme ve operasyonel altyapıya dönüştürür.