Sentry (Hata ve Log Takibi)

artiframe add sentry eklentisi, PHP projelerinin üretim (production) ortamlarındaki en büyük kurtarıcısı olan sentry/sentry kütüphanesini sisteminize entegre eder. Uygulamanız canlıdayken oluşan ölümcül hataları, fırlatılan exception'ları ve uyarı mesajlarını arka planda yakalayarak doğrudan Sentry.io dashboard'unuza raporlar.

1. Kurulum ve Yapılandırma

Eklentiyi kurmak için terminalinize şu komutu girin:

terminal
$ artiframe add sentry

Kurulum tamamlandıktan sonra .env dosyanıza Sentry DSN adresinizi (Data Source Name) girmelisiniz:

.env
SENTRY_DSN=https://[email protected]/000000

# Sentry'nin okuduğu diğer ArtiFrame standart değişkenleri:
APP_ENV=0         # 0=Production, 1=Development (Dev ortamında log gitmez)
APP_VERSION=1.2.0 # Sentry'e versiyon (Release) bilgisi düşer
Önemli Davranış: Eğer APP_ENV=1 (Development) ayarlıysa, geliştirme süreciniz boyunca Sentry kotanızı boş yere tüketmemeniz adına sample_rate otomatik olarak 0'a (kapalı) çekilir. Hatalar yalnızca canlı ortamda (APP_ENV=0) gönderilir.
2. Sistemi Başlatmak (Boot)

Sentry'nin tüm uygulamanızda çalışabilmesi için uygulamanın en başında bir kez başlatılması gerekir. Bunun için Bootstrap aşamasında veya tüm isteklerin geçtiği Controller kurucularında çağırmanız tavsiye edilir.

index.php (veya Base Controller)
<?php
use Src\Service\Sentry;

// Sistemi ayağa kaldıran yapılandırma
// DSN bilgisi var ise Sentry Engine çalışmaya başlar
Sentry::init();
3. Hataları Yakalamak (Capture Error)

Kritik işlemleri (Örn: Ödeme, Veritabanı Yazma) yürüttüğünüz bloklarda fırlatılan hataları sessizce Sentry'e bildirerek loglayabilirsiniz.

PaymentController.php
<?php
use Src\Service\Sentry;

try {
    // Kredi kartından para çekim işlemi vs...
    throw new \Exception("Stripe API Gateway Timeout", 504);

} catch (\Throwable $e) {
    // Hatayı Sentry dashboard'una gönderir
    $eventId = Sentry::captureError($e);
    
    // Kullanıcıya dostane bir mesaj dönün
    echo "Ödeme sırasında bir sorun oluştu. Hata Kodunuz: {$eventId}";
}
4. Bilgi ve Uyarı Mesajları Göndermek (Capture Message)

Bazen ortada bir sistem çökmesi (Exception) yoktur ancak ters giden bir iş akışını (Örn: "Stok sıfırın altına düştü", "Şüpheli giriş denemesi") raporlamak isteyebilirsiniz.

example.php
<?php
use Src\Service\Sentry;

// Sadece bilgilendirme
Sentry::captureMessage("Kullanıcı CSV export işlemini başlattı", "info");

// Kritik hata seviyesinde metin bazlı uyarı
Sentry::captureMessage("Veritabanı replikasyonu %90 gecikmeli çalışıyor!", "error");

// Warning / Uyarı
Sentry::captureMessage("İki faktörlü doğrulama 5 kez yanlış girildi", "warning");
MetotParametrelerAçıklama
captureMessage() string message, string level Manuel log gönderimi. Seviyeler: info (varsayılan), warning, error, fatal, debug