
Laravel çok geniş kapsamlı bir PHP çatısı. Bu nedenle de küçük projelerden ziyade büyük projelerde özellikle tercih edilmekte. Tabi proje büyüyünce dertleri de büyüyor. Özellikle de performansı artırmak için sistemde yapılan her veritabanı sorgusunu takip etmeniz, hesaba katmanız gerekiyor. İşte Laravel uygulamamızın yapmış olduğu bu veritabanı sorgularını laravel.log kullanarak nasıl analiz edebileceğimizi bu yazıda kısaca anlatmaya çalıştım.
Laravel Veritabanı Sorgularını İncelemek
Yukarıda bahsettiğim sorguları takip etmek içn Laravel/App/Providers klasöründerki AppServiceProvider.php dosyasına ufak bir müdahalede bulunacağız. Eğer başka herhangi bir müdahale yapmadıysanız dosyanın başlangıçtaki hali yorum satırları çıkarıldıktan sonra aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot() { // } public function register() { // } } |
Dosyayı düzenleyerek şu hale getiriyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use DB; use Log; class AppServiceProvider extends ServiceProvider { public function boot() { DB::listen(function($query) { Log::info( $query->sql, $query->bindings, $query->time ); }); } public function register() { // } } |
Tüm işlem bu kadar. Artık projemizde yapılan tüm sorgular storage/logs/laravel.log dosyasına aşağıdaki gibi kaydedilmektedir.
1 2 3 4 5 |
[2017-11-03 10:14:26] local.INFO: select * from `posts` where `slug` = ? limit 1 ["deneme-yazi"] [2017-11-03 10:14:27] local.INFO: select * from `photos` where `photos`.`post_id` in (?) [5] [2017-11-03 10:14:27] local.INFO: select * from `specs` where `specs`.`post_id` = ? and `specs`.`post_id` is not null [5] [2017-11-03 10:14:27] local.INFO: select * from `catalogs` where `catalogs`.`post_id` = ? and `catalogs`.`post_id` is not null [5] [2017-11-03 10:14:27] local.INFO: select * from `settings` |