Solusi 1:
Menambahkan delaycompress
ke bagian konfigurasi untuk /var/log/messages
memecahkan masalah.
Dari man logrotate
:
delaycompress
Postpone compression of the previous log file to the next rota‐
tion cycle. This only has effect when used in combination with
compress. It can be used when some program cannot be told to
close its logfile and thus might continue writing to the previ‐
ous log file for some time.
Saya kira sysklogd
, daemon syslog saya, tidak dapat diminta untuk menutup file lognya, dan karena itu diperlukan.
Menariknya, konfigurasi asli yang saya miliki (tanpa delaycompress
direktif), langsung keluar dari man logrotate
(kecuali saya mengubah weekly
ke daily
):
# sample logrotate configuration file
compress
/var/log/messages {
rotate 5
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
Solusi 2:
Sulit mengatakan hanya dengan info ini, tetapi saya dapat memberi tahu Anda apa yang telah menyelamatkan saya beberapa kali.
Logrotate memiliki opsi debug yang akan mencetak play-by-play dari setiap langkah yang diperlukan untuk stdout. Jadi dalam hal ini Anda dapat melakukan:
logrotate -d /etc/logrotate.conf
Outputnya akan memberi tahu Anda apa yang sebenarnya terjadi. Selain itu, jika Anda ingin mempersempit hasil debug, Anda dapat melakukannya
logrotate -d /etc/logrotate.d/messages
Meskipun Anda mungkin ingin untuk sementara menempatkan opsi logrotate.conf utama di blok file itu karena menentukan file secara langsung berarti tidak akan pernah membaca opsi konfigurasi utama. Menentukan file individual juga berarti Anda dapat menggunakan -f
(paksa) dikombinasikan dengan opsi debug untuk melihat rotasi sebenarnya dari file pesan yang terjadi.