Saya mencoba membuat logrotate untuk bekerja pada VPS saya untuk memutar file apache saya setiap minggu. Saat ini isi dari file konfigurasi apache2 adalah seperti itu.
"/var/www/user/site.com/logs/*.log" {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Saya telah meninggalkannya selama dua minggu sekarang dan tidak ada yang berubah sejauh yang saya tahu. Ketika saya mensimulasikannya dari baris perintah saya mendapatkan output berikut.
user@geneva:/var/lib/logrotate$ /usr/sbin/logrotate -d /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2
reading config info for "/var/www/user/site.com/logs/*.log"
Handling 1 logs
rotating pattern: "/var/www/user/site.com/logs/*.log" weekly (8 rotations)
empty log files are not rotated, old logs are removed
considering log /var/www/user/site.com/logs/access.log
log does not need rotating
considering log /var/www/user/site.com/logs/error.log
log does not need rotating
not running postrotate script, since no logs were rotated
Adakah gagasan tentang kesalahan konfigurasi Iv'e?
File status saya juga kosong :(
user@geneva:~$ cat /var/lib/logrotate/status
logrotate state -- version 2
Memperbarui
Saya menghapus file status dan menjalankan logrotate secara paksa dan sekarang lognya terlihat seperti diputar dan file status terlihat lebih menjanjikan!
sudo rm /var/lib/logrotate/status
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
/var/lib/logrotate.status
dengan tanggal setidaknya berumur seminggu. Saya memperbarui jawabannya dengan sebuah contoh ...Ini bisa jadi karena Anda log file kosong.
Situasi ini dapat terjadi karena apache masih menulis di file log sebelumnya, yang telah diubah namanya tanpa memulai ulang apache. Jadi access.log menjadi access.log.1 dan apache menulis ke dalamnya.
Atau Anda memiliki masalah dengan waktu pembuatan log:
sumber
notifempty
baris untuk menangani log 0 byte yang tidak berputar. Maka Anda akan ingintouch
file log baru sebelum setiap tes sehingga logrotate memiliki sesuatu untuk diputar.Saya menghadapi masalah yang sama kecuali tidak ada jawaban yang membantu saya. File log saya besar dan tua, konfigurasi saya 100% ok dan valid, menghapus file status tidak membantu.
Ternyata masalahnya adalah dalam entri logrotate duplikat . Ketika saya menjalankan logrotate secara manual pada file konfigurasi saya hanya seperti itu:
itu tidak menunjukkan kesalahan, itu hanya mengatakan:
Saya masih tidak tahu mengapa sebenarnya. Tetapi ketika saya menjalankan perintah logrotate lengkap seperti itu:
Saya mendapat baris berikut:
Ternyata file konfigurasi logrotate untuk layanan saya berisi entri untuk memutar log akses nginx serta log layanan itu sendiri. Dan itu bertentangan dengan konfigurasi ngnix logrotate, yang memiliki aturan untuk semua entri nginx:
Jadi solusi untuk kasus saya cukup sederhana: Saya hanya perlu menghapus aturan rotasi nginx log yang bertentangan dari konfigurasi saya .
Saya kira logrotate mulai membatalkan file pemrosesan pada konflik aturan hanya dari salah satu versi terbaru. Saya mendapatkan kesalahan ini dengan v.3.8.7 tetapi di bawah v.3.7.8 dengan konfigurasi konflik yang sama ia menulis kesalahan yang sama tetapi berputar dengan baik. Meskipun saya tidak dapat menemukan catatan apa pun di logelate changelog.
sumber
Coba jalankan
sudo logrotate -f --verbose /etc/logrotate.d/apache2
Lihat apa yang tertulis di konsol, dan perbaiki apa pun yang salah.sumber
Saya memiliki mesin Debian 7 yang, setelah pembaruan sistem, tidak memutar log surat lagi. Semua log lain selain yang mail diputar dengan benar. Saya menemukan bahwa log surat telah bertambah beberapa gigabyte. Saya selalu mengatur rotasi log melalui Webmin. Kemudian, berlari
logrotate -d /etc/logrotate.conf
saya melihat pesan berikut:Ignoring rsyslog.dpkg-old, because of .dpkg-old ending
Ternyata entri rotasi email saya terdaftar
/etc/logrotate.d/rsyslog.dpkg-old
, yang diabaikan! Mengganti nama file memperbaiki rotasi file log :-)sumber