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.
Eklentiyi kurmak için terminalinize şu komutu girin:
$ artiframe add sentry
Kurulum tamamlandıktan sonra .env dosyanıza Sentry DSN adresinizi (Data Source Name) girmelisiniz:
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
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.
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.
<?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();
Kritik işlemleri (Örn: Ödeme, Veritabanı Yazma) yürüttüğünüz bloklarda fırlatılan hataları sessizce Sentry'e bildirerek loglayabilirsiniz.
<?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}";
}
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.
<?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");
| Metot | Parametreler | Açıklama |
|---|---|---|
| captureMessage() | string message, string level | Manuel log gönderimi. Seviyeler: info (varsayılan), warning, error, fatal, debug |