Logrotate tidak menghapus log lama


14

untuk beberapa alasan file log lama tidak dihapus. Contoh dengan apache

Apa yang dikatakan file conf:

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 2
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null
    endscript
}

Konten (yang dipangkas) dari folder log:

# ls /var/log/apache2/
access.log       error.log.26.gz                other_vhosts_access.log.20.gz  access-ssl.log.14.gz
access.log.1     error.log.27.gz                other_vhosts_access.log.21.gz  access-ssl.log.15.gz
access.log.2.gz  error.log.28.gz                other_vhosts_access.log.22.gz  access-ssl.log.16.gz
access.log.3.gz  error.log.2.gz                 other_vhosts_access.log.23.gz  access-ssl.log.17.gz
[...]

Sebenarnya ada banyak dari mereka:

# ls /var/log/apache2/ | wc -l
85

Perintah logrotate dengan --verbose memberi saya ini:

# /usr/sbin/logrotate --verbose  /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating
considering log /var/log/apache2/error.log
  log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
  log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
  log does not need rotating
not running postrotate script, since no logs were rotated
[...]

Apa yang salah di sini? Log diputar tetapi tidak dihapus? Apa yang saya lewatkan?

Jawaban:


17

konfigurasi Anda mengatakan: rotate 2

itu berarti file log diputar 2 kali sebelum dihapus, jadi logrotate hanya peduli tentang 2 file.

Dugaan saya adalah bahwa konfigurasi telah diubah di beberapa titik, karena sebelumnya lebih banyak file log disimpan, mungkin itu seperti rotate 28. file-file lama ini harus Anda hapus secara manual.


Saya tidak bisa membuktikan jawabannya jadi saya kira itu benar. Namun saya tidak mengerti mengapa access.log.3.gzmasih ada.
— SamK

2
Karena rotate 2 hanya menangani 2 file, yaitu .1.gz dan .2.gz, dan mengabaikan file lainnya.
— johnshen64

1
Saya telah mengubah rotate 365 ke rotate 90, dan access.log.90.gz adalah perubahan terbaru sejauh ini. Access.log.91.gz telah dihapus (karena logrotate hanya menyimpan 90), tetapi bukan yang> 91. Jadi johnshen64 benar, Anda harus menghapus apa pun> 2.
— Yvan

Berikut tip tentang cara menangani hal ini secara otomatis, yaitu melalui manajemen konfigurasi pada banyak server: serverfault.com/a/636883/9082
— Martijn Heemels

-3

Log dengan sufiks .gz tidak dipertimbangkan karena Anda menentukan: /var/log/apache2/*.log

Jadi 2 .log dan semua file .gz tetap.

Untuk mengubah ini taruh di sana

/ var / log / apache2 / ** log * atau ekspresi reguler.


Maaf hanya satu asterisk sebelum log
— Neg88

2
Untuk masalah asterisk, Anda dapat mengedit posting Anda. Secara umum, mengapa menurut Anda jawaban yang diterima salah? logrotate menginginkan file nama dasar dan menangani penambahan .gz sesuai kebutuhan.
— Law29

Jawaban ini sebenarnya berbahaya karena ada risiko dapat mengakibatkan file diputar berulang-ulang, setidaknya dengan beberapa versi logrotate. Ini akan memampatkan file pertama, kemudian mencocokkan file yang dikompresi dan terus memutarnya.
— Richlv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.