design

Laravel'de Error Handling: Özel Hata Sayfaları ve Akıllı Loglama

April 4, 2025

"Kullanıcılarınız 404 hatasıyla karşılaştığında ne görüyor?" Laravel'de profesyonel hata yönetimi ile kullanıcı deneyimini nasıl dönüştüreceğinizi öğrenin!


Neden Özel Hata Yönetimi? 🤔

  • Kullanıcıları kaybetmeyin! 57% kullanıcı hata sayfasında 3 saniyeden fazla kalmaz
  • SEO kayıplarını önleyin - Google 5xx hatalarını sevmez
  • Gizli veri sızıntılarını engelleyin 🔒
  • Hataları daha hızlı tespit edin 🔍


1. Özel Hata Sayfaları 🎨

Blade Template ile Özelleştirme

php artisan make:view errors/404
php artisan make:view errors/500


404.blade.php Örneği:

@extends('layouts.app')

@section('content')
<div class="error-page">
    <h1>Oops! Sayfa Bulunamadı</h1>
    <p>Üzgünüz, aradığınız sayfa artık burada değil.</p>
    <a href="/" class="btn">Anasayfaya Dön</a>
    <img src="{{ asset('images/404-illustration.svg') }}" alt="404 Error">
</div>
@endsection



HTTP Hata Kodlarına Göre Özelleştirme

// app/Exceptions/Handler.php
public function register()
{
    $this->renderable(function (NotFoundHttpException $e) {
        return response()->view('errors.404', [], 404);
    });

    $this->renderable(function (AuthenticationException $e) {
        return response()->view('errors.403', [], 403);
    });
}


2. Akıllı Loglama Sistemi 📝

Context Ekleyerek Loglama

try {
    // Riskli kod
} catch (Exception $e) {
    Log::error('Ödeme işlemi başarısız', [
        'user' => auth()->id(),
        'amount' => $request->amount,
        'error' => $e->getMessage(),
        'trace' => $e->getTraceAsString()
    ]);
    
    throw new PaymentFailedException('Ödeme alınamadı');
}


Log Kanalları ile Yönetim

// config/logging.php
'channels' => [
    'critical' => [
        'driver' => 'stack',
        'channels' => ['slack', 'papertrail'],
        'level' => 'critical',
    ],
    
    'payment_errors' => [
        'driver' => 'daily',
        'path' => storage_path('logs/payments.log'),
        'level' => 'error',
        'days' => 14,
    ],
]


3. Kullanıcı Dostu Hata Mesajları 💬

JSON API Hataları

// Handler.php
if ($request->wantsJson()) {
    return response()->json([
        'error' => 'Not Found',
        'message' => 'The requested resource was not found',
        'documentation' => 'https://api.example.com/docs/errors/404',
        'code' => 404
    ], 404);
}

Form Validasyon Hataları

php

Copy

// FormRequest'te
public function failedValidation(Validator $validator)
{
    throw new HttpResponseException(response()->json([
        'errors' => $validator->errors(),
        'suggestion' => 'Lütfen tüm zorunlu alanları doldurun'
    ], 422));
}


4. Hata Takip Sistemleri 🔍

Sentry Entegrasyonu

composer require sentry/sentry-laravel


// .env
SENTRY_LARAVEL_DSN=https://[key]@sentry.io/[project]


Özel Hata Raporlama

public function report(Exception $exception)
{
    if ($this->shouldReport($exception)) {
        Bugsnag::notifyException($exception);
        
        if ($exception instanceof PaymentException) {
            Slack::sendToPaymentAlerts($exception);
        }
    }
    
    parent::report($exception);
}


5. Hata Sayfaları için SEO Optimizasyonu 🔎

404 Sayfası Meta Ayarları:

@section('meta')
    <meta name="robots" content="noindex">
    <title>404 Sayfa Bulunamadı | {{ config('app.name') }}</title>
    <meta name="description" content="Aradığınız sayfa taşınmış veya silinmiş olabilir">
@endsection



Sonuç: Kusursuz Hata Yönetimi 🏆

  • %40 daha az kullanıcı kaybı 📉
  • %30 daha hızlı hata çözümü ⚡
  • Daha güvenli uygulama 🛡️
Hata yönetimi için hangi araçları kullanıyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de Dependency Injection ve Service Container] - Laravel'in kalbine yolculuk!

#Laravel #ErrorHandling #UX #Logging #WebDevelopment 🚀

3 + 3 =