Merhaba arkadaşlar, bugün sizlere Laravel’de loglama (logging) konusunu ve hata takibi ile analizini nasıl yapabileceğinizi anlatacağım. Loglama, uygulamanızda gerçekleşen olayları ve hataları kaydetmek için kullanılan bir yöntemdir. Bu sayede, uygulamanızın performansını izleyebilir ve hataları kolayca tespit edebilirsiniz. Laravel, loglama işlemleri için güçlü bir yapı sunar. Gelin, bu konuları adım adım inceleyelim.
Loglama, uygulamanızda gerçekleşen olayları ve hataları kaydetme işlemidir. Bu kayıtlar, uygulamanızın performansını izlemek, hataları tespit etmek ve kullanıcı deneyimini iyileştirmek için kullanılır. Laravel, loglama işlemleri için Monolog kütüphanesini kullanır ve farklı log seviyeleri sunar.
Laravel, loglama işlemleri için farklı seviyeler sunar. Bu seviyeler, log kayıtlarının önemine göre sınıflandırılır. İşte bazı yaygın log seviyeleri:
Laravel’de loglama işlemleri, Log
facade’u ile kolayca gerçekleştirilebilir. Örneğin, bir hata mesajını loglamak için:
use Illuminate\Support\Facades\Log; public function index() { try { // İşlemler } catch (\Exception $e) { Log::error('Bir hata oluştu: ' . $e->getMessage()); } }
Bu kod, bir hata oluştuğunda error
seviyesinde bir log kaydı oluşturur.
Laravel, log dosyalarını config/logging.php
dosyasından yapılandırmanıza olanak tanır. Varsayılan olarak, loglar storage/logs
dizinine kaydedilir. Ancak, farklı log kanalları kullanarak logları farklı yerlere kaydedebilirsiniz.
Örnek Log Yapılandırması:
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'slack'], ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => 'critical', ], ],
Bu yapılandırma, logları hem single
kanalına (dosyaya) hem de slack
kanalına (Slack’e) kaydeder.
Eğer özel log kanalları oluşturmak istiyorsanız, config/logging.php
dosyasında yeni kanallar tanımlayabilirsiniz. Örneğin, logları bir veritabanına kaydetmek için:
'database' => [ 'driver' => 'custom', 'via' => App\Logging\DatabaseLogger::class, 'level' => 'debug', ],
Ardından, DatabaseLogger
sınıfını oluşturabilirsiniz:
namespace App\Logging; use Monolog\Logger; use Illuminate\Support\Facades\DB; class DatabaseLogger { public function __invoke(array $config) { return new Logger('database', [ new DatabaseHandler($config), ]); } } class DatabaseHandler extends \Monolog\Handler\AbstractProcessingHandler { protected function write(array $record): void { DB::table('logs')->insert([ 'message' => $record['message'], 'level' => $record['level_name'], 'context' => json_encode($record['context']), 'created_at' => now(), ]); } }
Bu kod, logları logs
tablosuna kaydeder.
Logları analiz etmek için farklı araçlar kullanabilirsiniz. Örneğin, Logstash, Elasticsearch ve Kibana gibi araçlarla logları toplayabilir, analiz edebilir ve görselleştirebilirsiniz.
Örnek Log Analizi:
Laravel’de loglama, uygulamanızın sağlıklı bir şekilde çalışmasını sağlamak için vazgeçilmez bir araçtır. Eğer hataları takip etmek, performansı izlemek ve kullanıcı deneyimini iyileştirmek istiyorsanız, loglama işlemlerini mutlaka kullanmalısınız. Bir sonraki yazımda, Laravel’de Package Development: Kendi Paketinizi Oluşturun konusuna değineceğim. Görüşmek üzere!