Parameter daily, weekly, dan monthly dalam utilitas logrotate Linux menentukan frekuensi seberapa sering file log sistem atau aplikasi dirotasi, dikompresi, dan dibersihkan. Pemilihan parameter ini bergantung langsung pada tingkat volume log yang dihasilkan oleh aplikasi Anda untuk mencegah kapasitas penyimpanan habis tanpa mengorbankan kebutuhan audit investigasi.
Perbandingan Utama Parameter Logrotate
Logrotate tidak berjalan secara mandiri sebagai daemon yang memantau waktu secara real-time. Utilitas ini dieksekusi secara periodik melalui cron (biasanya harian lewat /etc/cron.daily/logrotate). Ketika logrotate berjalan, ia membaca konfigurasi dan memeriksa apakah syarat waktu atau ukuran terpenuhi.
| Parameter | Frekuensi Eksekusi Evaluasi | Kondisi Rotasi | Kasus Penggunaan Ideal |
|---|---|---|---|
daily |
Setiap hari | Log dirotasi setiap kali cron harian mendeteksi hari berganti. | Web server dengan trafik tinggi (Nginx/Apache), log akses API, error log aktif. |
weekly |
Setiap hari (evaluasi mingguan) | Log dirotasi jika sudah 7 hari sejak rotasi terakhir atau jika hari ini adalah hari Minggu (default). | Aplikasi medium dengan volume log sedang, log sistem internal (syslog). |
monthly |
Setiap hari (evaluasi bulanan) | Log dirotasi pada hari pertama setiap bulan kalender baru. | Log arsip jangka panjang, cron job jarang, aplikasi dengan volume log sangat kecil. |
Contoh Konfigurasi Blok Logrotate
Berikut adalah implementasi nyata konfigurasi logrotate untuk aplikasi web Nginx yang menggunakan parameter daily beserta direktif pendukung seperti rotate, compress, dan delaycompress.
/var/log/nginx/*.log {
daily
rotate 14
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
Parameter Pendukung Penting
- rotate 14: Menyimpan 14 arsip log lama sebelum file paling tua dihapus. Jika menggunakan
daily, berarti Anda menyimpan riwayat log selama 2 minggu. - missingok: Mengabaikan pesan error jika file log tidak ditemukan tanpa menghentikan proses rotasi file lainnya.
- notifempty: Mencegah log dirotasi jika ukuran file log tersebut 0 byte (kosong).
- delaycompress: Menunda kompresi file log yang baru dirotasi hingga siklus rotasi berikutnya (bergantung pada proses tulis aplikasi yang mungkin masih memegang file descriptor lama).
Troubleshooting & Tips Lapangan
Seringkali administrator mendapati log tidak mau berotasi sesuai jadwal daily, weekly, atau monthly. Hal ini umumnya terjadi karena cron job utama tidak berjalan atau file status logrotate (/var/lib/logrotate/logrotate.status) terkunci atau mencatat waktu eksekusi yang keliru.
Untuk menguji konfigurasi secara manual tanpa menunggu jadwal cron, jalankan perintah debug berikut di terminal:
logrotate -d /etc/logrotate.conf
Jika ingin memaksa eksekusi rotasi seketika terlepas dari catatan waktu di file status, gunakan opsi force (-f):
logrotate -f /etc/logrotate.d/nginx