16 Jul 2018
Laravel Log Yapısı (Logging)
  • 423 Okuma
  • 0 Yorum
  • 14 Beğeni

Laravel Log Yapısı (Logging)

Bilgisayarda çalışan hemen hemen her uygulama log (kayıt) tutmaktadır. Bu kayıtlar sayesinde uygulama üzerinde yapılan işlemleri ve oluşan hataları takip edebiliriz. Hatta kayıtları özellikle uygulama geliştirme esnasında çok yardımcı olmaktadır. Bu hata mesajları ile uygulamamızda oluşan hataları düzelterek daha kararlı çalışan uygulamalar geliştirebiliriz. Bu makalemde Laravel'de log işlemlerini anlatmaya çalışacağım.


Laravel log yapılandırması config/logging.php dosyasında tutulmaktadır. Bu dosya üzerinden tutulacak log dosyasının saklanma şekli kanallar ile tanımlanabilmektedir. Bu şekilde logları tek bir dosyada tutabileceğiniz gibi, her gün için ayrı bir log dosyasının oluşturulmasını da sağlayabiliriz. Laravel'in desteklediği log saklama türleri aşağıda olduğu gibidir.


- stack, birden fazla dosya saklama şeklinin tanımlanmasında kullanılır

- single, loglar tek bir dosya üzerinde saklanır

- daily, loglar hergün ayrı bir dosya üzerinde saklanır

- slack, logların Slack'e gönderilmesinde kullanılır

- papertrail, logların Papertrail'e gönderilmesinde kullanılır

- syslog, logların Syslog'a gönderilmesinde kullanılır

- errorlog, Error loglarınn gönderilmesinde kullanılır

- monolog, Monolog'un desteklediği diğer kayıt tutmak türleri için kullanılır

- custom, Kendinize özgü bir log tutma şekli oluşturmada kullanılır


Single ve Daily kayıt tutmak şeklinin yapılandırılması


Single ve Daily kayıt tutma şekilleri yapılandırmada 3 tane özelliğe sahiptir.

 - bubble, kayıtların diğer kanallara gönderilip gönderilmeyeceği belirlenir, varsayılan olarak true değeri alır.

- permission, log dosyasının erişim izni belirlenir. Varsayılan olarak 0644 'tür.

- locking, log'un dosyaya yazılmadan önce dosyanın yazmaya karşı korumasının açılıp açılmayacağı belirlenir. Varsayılan olarak false değeri alır.


Papertrail yapılandırılması


Log'ların papertrail'a gönderilmesi için url ve port yapılandırması yapılmalıdır. URL ve port bilgilerine buradan erişebilirsiniz.


Slack yapılandırılması

Log'ların Slack'e gönderilmesi için URL'in tanımlanması gerekmektedir. URL yapılandırma ile ilgili bilgilere buradan erişebilirsiniz. Örnek slack yapılandırması,


'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['syslog', 'slack'],
    ],

    'syslog' => [
        'driver' => 'syslog',
        'level' => 'debug',
    ],

    'slack' => [
        'driver' => 'slack',
        'url' => env('LOG_SLACK_WEBHOOK_URL'),
        'username' => 'Laravel Log',
        'emoji' => ':boom:',
        'level' => 'critical',
    ],
],


Log Seviyeleri (Levels)


Laravel emergency, alert, critical, error, warning, notice, info ve debug log seviyelerini desteklemektedir. Log seviyesine göre oluşan kayıtları farklı log kanallarına gönderebilirsiniz. Yukarıdaki verdiğim örnekte, sistem kayııtları Syslog'a gönderilecektir. Ancak log seviyesi criticak ya da üstü olmadığı için slack'a gönderilmeyecek. emergency ise her iki kanal'a da gönderilecektir.


Laravel'de log kayıtlarının tutulması için Log facade'i kullanılmaktadır. Aşağıdaki şekilde istediğiniz seviyede log tutabilirsiniz.

Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);


Belirli kanal'a log gönderme


Log facade kullanarak istediğimiz kanal'a istediğimiz seviyede log gönderebiliriz. Örnek kullanım,


Log::channel('slack')->info('Something happened!');

Log::stack(['single', 'slack'])->info('Something happened!');



Sonuç


Web uygulamalarında log tutma işlemi, hem oluşan hataların kayıt altına alınması hemde yapılan işlemelerin kayıt alınması işleminde kullanılabilmektedir. Bu kayıtlar sayesinde uygulama üzerinde yapılan işlemleri takip edebilir ve oluşan hataları düzelterek daha kararlı web uygulamaları geliştirebiliriz.


Bu yazımda Laravel'de log tutma işleminin nasıl yapıldığına dair blgi vermeye çalıştım.

Umarım faydalı olur. İyi çalışmalar.


Makaleyi faydalı buldunuz mu ?

Yazar


Legend Engineer

Legend Engineer

Mühendis (Bilgisayar)

Bilgisayar Mühendisliği mezunuyum. Bilgisayar alanında edindiğim bilgileri bu blog üzerinde paylaşıyorum. Beni takipte kalın.

Yorumlar


İlk yorum yapan sen ol

İlginizi Çekebilir

Makale Hakkındaki Düşünçelerinizi Paylaşın