it-swarm-id.com

Logrotate: "log tidak perlu berputar" mengapa?

Saya memiliki konfigurasi logrotate baru berikut:

/var/log/nexus/nexus.log {
    rotate 7
    missingok
    compress
    delaycompress
    copytruncate
    daily
}

Ketika saya menjalankan 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 bahwa file nexus.log akan terpotong dan file baru, sesuatu seperti nexus.log-201106241000, akan dibuat.

60
Rich

Kemungkinan besar, file log berumur kurang dari satu hari dan/atau telah diputar pada hari terakhir dan logrotate mengingat sejarah.

Jika Anda menambahkan -f itu akan memaksa rotasi jika Anda benar-benar ingin (walaupun tidak 100% yakin bagaimana itu berinteraksi dengan -d).

Anda dapat melihat histori, lokasi tergantung pada distribusi Anda, tetapi mungkin /var/lib/logrotate/status. File itu menunjukkan kapan log terakhir diputar.

68
EightBitTony

Pertama kali Anda menjalankan logrotate dengan konfigurasi log baru, ia tidak tahu kapan rotasi log terakhir terjadi, jadi ia hanya menulis baris status di /var/lib/logrotate/status hingga efeknya 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

61
Tony Sweeney

Terkadang bahkan jika Anda menjalankan logrotate secara manual, ini tidak akan berfungsi jika Anda melakukannya pada hari yang sama dan memiliki dateext di mana nilai default tidak termasuk senconds (mis. -%Y%m%d). Bahkan jika Anda memodifikasi file status logrotate atau saat menggunakan arahan ukuran (mis. size 200M). Setidaknya pada CentOS 6, logrotate akan gagal memutar file log Anda karena sudah ada.

Untuk mengatasi ini, Anda perlu menggunakan dateformat alih-alih dateext, dengan nilai seperti: %Y%m%d%s.

Lihat man logrotate untuk informasi lebih lanjut.

5
emerino

Waspadalah dengan menjalankan

logrotate -vdf /etc/logrotate.conf

acara tersebut meskipun hanya disimulasikan akan dicatat ke /var/lib/logrotate.status dan proses logrotate berikutnya akan membalas dengan yang disebutkan

log does not need rotating
1
helvete