Merhaba,

Bu yazıda logrotate ile log yedekleme gibi log yönetimini özetleyeceğiz. Ben hali hazırda koşmakta olan rails uygulamalarının loglarını yönetmek için kullandığım yapılandırma ile örnekleyeceğim.

Logrotate yapılandırması için iki seçeneğimiz var. Bir tanesi /etc/logrotate.conf dosyasına eklemek veya /etc/logrotate.d/ dizinine yeni bir dosya oluşturmak. Bu kısımda benim tercihim ikincisi oldu. Modüler çalışmak her zaman iyidir 🙂

Benim kontrol etmek istediğim log bir Rails uygulamasının production.log dosyası. Uygulama /home/belediye/site/ dizininde çalışmakta. Log dosyası ise /home/belediye/site/log/production.log

Burada anlamamız gereken bazı şeyler var. Satır satır işleyelim.

  1. /home/belediye/site/log/production.log – Burada hangi dosya üzerinde çalışacağını belirtiyoruz
  2. missingok – Eğer ki mevcut log dosyası yoksa hata mesajı vermeden işlemlere devam eder.
  3. monthly – Aylık olarak çalışacağı anlamına gelir. Diğer kullanımları ise hourly[1]: saatlik, daily: günlük, weekly: haftalık
  4. rotate 12 – Dosyanın kaç yedeğinin saklanacağı. Aylık yaptığımızdan son 12 ay’a ait yedekler saklanacak
  5. compress – gzip ile dosyaları sıkıştırıp yedekler.
  6. dateext – Yedeklenen dosyaya isim verirken tarih bilgisini de ekler.
  7. copytruncate – Yedeği oluşturulan log dosyasını temizler.

Dosyayı oluşturup kayıt ettikten sonra sudo logrotate -f /etc/logrotate.d/belediye dediğimizde logrotate çalıştığını görebiliriz. Logrotate için herhangi bir reload işlemine gerek yok. /etc/logrotate.conf dosyasına bakarsanız include /etc/logrotate.d  satırını görebilirsiniz. Bu da bize dizinin logrotate.conf dosyasına include edildiğini gösterir. Logrotate varsayılan olarak günlük çalışmaktadır. /etc/cron.daily/ dizinine gittiğinizde logrotate dosyasını görebilirsiniz. [1]’de hourly demiştik, bunun için de kendi yapılandırma dosyanız için bir cron eklemeniz gerekecek.

Ayrıca postrotate/endscript ile logrotate çalıştıktan sonra yapılması istediğiniz bir komutu çalıştırabilirsiniz. Mevcut yapılandırmamız için örnek kullanım da şöyle:

Postrotate dışında prerotate/endscript, firstaction/endscript, lastaction/endscript, preremove/endscript gibi kullanımlar da mevcut. Daha fazlası için manuel’ı okuyabilirsiniz. Terminale man logrotate yazdığınızda detaylı bilgiye ulaşabilirsiniz.