Saya memiliki konfigurasi logrotate baru berikut:
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
Ketika saya berlari logrotate -d nexus
, saya mendapatkan yang berikut:
reading config file nexus
reading config info for /var/log/nexus/nexus.log
Handling 1 logs
rotating pattern: /var/log/nexus/nexus.log after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
log does not need rotating
/ Var / log / nexus / folder saya berisi yang berikut ini:
nexus.log
oldlogs.tar.gz
Mengapa LogRotate tidak memutar file nexus.log? Apa yang saya harapkan adalah file nexus.log akan terpotong dan file baru, seperti nexus.log-201106241000, akan dibuat.
Jawaban:
Kemungkinan besar, file log berumur kurang dari satu hari dan / atau telah diputar pada hari terakhir dan logrotate mengingat sejarah.
Jika Anda menambahkannya
-f
akan memaksa rotasi jika Anda benar-benar ingin (walaupun tidak 100% yakin bagaimana itu berinteraksi dengan-d
).Anda dapat melihat riwayat, lokasi tergantung pada distribusi Anda, tetapi mungkin juga
/var/lib/logrotate/status
. File itu menunjukkan kapan log terakhir diputar.sumber
-d
+-f
membuat laporan logrotate "perlu diputar" untuk semua file, bahkan yang tidak cocoklogrotate
itu perlu memutar log ketika berjalan lagi.Pertama kali Anda menjalankan logrotate dengan konfigurasi log baru, ia tidak tahu kapan rotasi log terakhir terjadi, jadi itu hanya menulis baris status
/var/lib/logrotate/status
ke efek yang dijalankan hari ini.Ketika kemudian dijalankan pada hari berikutnya, ia melihat bahwa log tersebut berumur satu hari dan memutarnya seperti yang diharapkan. Jika Anda tidak ingin menunggu, edit file status logrotate dan buat tanggal status untuk log Anda kembali ke hari sebelumnya.
Ketika Anda menjalankan logrotate secara manual, itu akan berfungsi seperti yang diharapkan
sumber
Kadang-kadang bahkan jika Anda menjalankan logrotate secara manual, ini tidak akan berfungsi jika Anda melakukannya pada hari yang sama dan memiliki di
dateext
mana nilai default tidak termasuk senconds (misalnya-%Y%m%d
). Bahkan jika Anda memodifikasi file status logrotate atau ketika menggunakan ukuran direktif (misalnyasize 200M
). Setidaknya pada CentOS 6, logrotate akan gagal memutar file log Anda karena sudah ada.Untuk mengatasi ini, Anda perlu menggunakan
dateformat
bukannyadateext
, dengan nilai seperti:%Y%m%d%s
.Lihat
man logrotate
untuk informasi lebih lanjut.sumber
Waspadalah dengan menjalankan
acara meskipun hanya disimulasikan akan dicatat
/var/lib/logrotate.status
dan proses logrotate berikutnya akan menjawab dengan yang disebutkansumber
/var/lib/logrotate.status
) telah diamati saat debugging konfigurasi Logrotate 3.10 pada Alpine linux 3.5 dalam wadah buruh pelabuhan. Tetapi tidak ada bendera Ubuntu dalam definisi pertanyaan, bukan?/var/lib/logrotate/logrotate.status