0Pricing
PHP Academy · Ders

Hataları Günlüğe Kaydetme ve En İyi Uygulamalar

Hataları dosyalara günlüğe kaydedin ve üretim ortamına uygun hata işleme düzenlerini izleyin.

Hataları Günlüğe Kaydetme ve En İyi Uygulamalar, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

Günlük Kaydı Neden Önemlidir

Üretim ortamında hataları kullanıcılara gösteremezsiniz; ancak işler ters gittiğinde bunu yine de bilmeniz gerekir. Günlük kaydı, hata ayrıntılarını dosyalara veya hizmetlere kaydederek daha sonra incelemenizi sağlar.

error_log()

En basit günlük kaydı işlevi — bir iletiyi PHP'nin hata günlüğüne yazar:

<?php
error_log('User login failed for: ' . $email);
error_log('DB query took: ' . $duration . 'ms');

// Send to email (not recommended for high traffic)
error_log('Critical: server out of memory', 1, 'admin@example.com');

Yapılandırılmış Günlük Kaydı

Daha kolay ayrıştırma ve sorgulama için yapılandırılmış verileri JSON olarak günlüğe kaydedin:

<?php
function logEvent(string $level, string $message, array $context = []): void {
    $entry = array_merge([
        'ts'      => date('c'),
        'level'   => $level,
        'message' => $message,
    ], $context);

    error_log(json_encode($entry));
}

logEvent('ERROR', 'Payment failed', [
    'order_id' => 123,
    'amount'   => 99.99,
    'user_id'  => 45,
]);

Günlük Seviyeleri (PSR-3)

PSR-3, standart günlük seviyelerini tanımlar:

  • acil durum — sistem kullanılamıyor
  • alarm — işlem yapılması gerekiyor
  • kritik — kritik koşullar
  • hata — çalışma zamanı hataları
  • uyarı — hata olmayan olağan dışı olaylar
  • bildirim — normal ancak önemli olaylar
  • bilgi — bilgilendirici iletiler
  • hata ayıklama — ayrıntılı hata ayıklama bilgileri

Monolog Günlük Kaydedicisi

Monolog, PSR-3 uyumlu standart PHP günlük kaydı kütüphanesidir:

<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('app');
$log->pushHandler(new StreamHandler('/var/log/app.log', Logger::DEBUG));

$log->info('User logged in', ['user_id' => 42]);
$log->error('Payment failed', ['order' => 99, 'reason' => 'card_declined']);
$log->warning('Slow query', ['duration_ms' => 3200]);

Üretim Ortamında İstisna İşleme

Günlük kaydı yapan ve güvenli bir yanıt döndüren, üretim düzeyinde bir istisna işleyicisi:

<?php
set_exception_handler(function(\Throwable $e) {
    $id = uniqid('err_');
    error_log(json_encode([
        'error_id' => $id,
        'class'    => get_class($e),
        'message'  => $e->getMessage(),
        'file'     => $e->getFile(),
        'line'     => $e->getLine(),
        'trace'    => $e->getTraceAsString(),
    ]));
    http_response_code(500);
    echo json_encode(['error' => 'Server error', 'id' => $id]);
    exit(1);
});

Günlük Döndürme

Günlük dosyaları sürekli büyür — Linux'ta logrotate veya Monolog'daki zamana dayalı işleyicilerle bunları döndürün:

<?php
use Monolog\Handler\RotatingFileHandler;

$handler = new RotatingFileHandler(
    '/var/log/app.log',
    30,              // keep 30 days
    Logger::DEBUG
);

// Creates dated files: app-2024-05-27.log
$log = new Logger('app');
$log->pushHandler($handler);

Bağlam Açısından Zengin Günlük Kaydı

Hata ayıklamayı kolaylaştırmak için her günlük kaydı girdisine istek bağlamını ekleyin:

<?php
function getRequestContext(): array {
    return [
        'url'     => $_SERVER['REQUEST_URI'] ?? '',
        'method'  => $_SERVER['REQUEST_METHOD'] ?? '',
        'ip'      => $_SERVER['REMOTE_ADDR'] ?? '',
        'user_id' => $_SESSION['user_id'] ?? null,
    ];
}

// Add to every log call:
$log->error('Order failed', array_merge(
    getRequestContext(),
    ['order_id' => $orderId]
));

Günlüklerde Hassas Verilerden Kaçınma

Hassas bilgileri asla günlüğe kaydetmeyin:

  • Parolalar ve belirteçler
  • Kredi kartı numaraları
  • Kişisel veriler (GDPR uyumluluğu)
  • Kullanıcıya gösterilen yanıtlarda tam istisna çağrı izleri
<?php
// Bad:
error_log('Login attempt: ' . $email . ' / ' . $password);

// Good:
error_log('Login failed for user: ' . substr($email, 0, 3) . '***');

Sentry ve Harici Hata İzleme

Üretim ortamında hataları merkezileştirmek ve onlar hakkında uyarı vermek için Sentry gibi hata izleme hizmetleri kullanın:

<?php
// After composer require sentry/sdk
\Sentry\init(['dsn' => getenv('SENTRY_DSN')]);

// Automatic capture of unhandled exceptions
// Manual capture:
try {
    processOrder();
} catch (\Throwable $e) {
    \Sentry\captureException($e);
    throw $e;
}

Assert Tabanlı Ön Koşullar

Geliştirme sırasında programlama hatalarını yakalamak için doğrulamaları kullanın:

<?php
// assert() throws AssertionError when false (dev mode)
assert(is_int($userId), 'userId must be an integer');
assert($amount > 0, 'amount must be positive');

// Or throw explicitly:
if (!is_int($userId)) {
    throw new \InvalidArgumentException('userId must be int');
}

Hızlı Kontrol

PSR-3'e göre hangi günlük seviyesi derhâl müdahale gerektiren bir durumu belirtir?

Özet: Hata Günlük Kaydı

Günlük kaydı için en iyi uygulamalar:

  • Zaman damgası, seviye, ileti ve bağlam içeren yapılandırılmış JSON günlük kaydı kullanın
  • PSR-3 günlük seviyelerine uyun
  • Üretim uygulamalarında Monolog kullanın
  • Diskin dolmasını önlemek için günlükleri döndürün
  • Parolaları veya hassas verileri asla günlüğe kaydetmeyin
  • Gerçek zamanlı hata izleme için Sentry veya benzeri bir araç kullanın

Sıkça Sorulan Sorular

“Hataları Günlüğe Kaydetme ve En İyi Uygulamalar” dersi ücretsiz mi?

Evet — “Hataları Günlüğe Kaydetme ve En İyi Uygulamalar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“Hataları Günlüğe Kaydetme ve En İyi Uygulamalar” dersinde ne öğreneceğim?

Hataları dosyalara günlüğe kaydedin ve üretim ortamına uygun hata işleme düzenlerini izleyin. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Hataları Günlüğe Kaydetme ve En İyi Uygulamalar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. PHP Hata Türleri ve Raporlama
  2. Try, Catch ve Finally
  3. Özel İstisnalar Oluşturma
  4. Hataları Günlüğe Kaydetme ve En İyi Uygulamalar
← PHP Academy Sayfasına Dön