logrotate nedir?
logrotate, Linux sunucularda günlük (log) dosyalarının boyutunu yönetmek için kullanılan araçtır. Belirlenen sıklık ya da boyutta günlüğü yeni dosyaya geçirir, eskileri sıkıştırır ve belirlenen sayıdan fazlasını siler. Böylece günlük dosyalarının diski doldurması önlenir.
Web sunucusu, e-posta, veritabanı ve uygulama günlükleri zamanla çok büyüyebilir. logrotate olmadan bu dosyalar sessizce yer kaplar ve bir gün servisin durmasına neden olur.
Nasıl çalışır?
logrotate genellikle günlük olarak cron ya da systemd zamanlayıcısıyla çalıştırılır. Ana ayar /etc/logrotate.conf, servislere özel kurallar ise /etc/logrotate.d/ altındaki dosyalardadır. Bir kuralda günlüğün yolu, döndürme sıklığı (daily, weekly), saklanacak sayı (rotate 14), sıkıştırma (compress) ve döndürme sonrası çalışacak betik tanımlanır.
Önemli bir ayrıntı, servisin yeni dosyayı kullanmaya başlamasıdır. Bunun için ya postrotate bölümünde servise sinyal gönderilir (örneğin yeniden yükleme) ya da copytruncate ile dosya kopyalanıp kesilir.
Sunucu ve hosting ortamında
Nginx, Apache, MariaDB, Postfix ve panel yazılımları kendi logrotate kurallarıyla gelir. Kendi uygulamanız için günlük yazıyorsanız ayrı bir kural eklemeniz gerekir. Hosting ortamlarında kullanıcıların erişim günlükleri de döndürülüp arşivlenir. Yasal saklama yükümlülükleriniz varsa saklama süresi buna göre belirlenmelidir.