Logrotate eski günlükleri kaldırmaz


14

bazı nedenlerden dolayı eski günlük dosyaları silinmez. Apache ile örnek

Conf dosyası ne diyor:

$ 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
}

Günlük klasörünün (kırpılmış) içeriği:

# 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
[...]

Aslında birçoğu var:

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

--Verbose ile logrotate komutu bana şunu verir:

# /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
[...]

Burada yanlış olan ne? Günlükler döndürülmüş ancak kaldırılmamış mı? Neyi kaçırıyorum?

Yanıtlar:


17

yapılandırmanız diyor: 2 döndür

Bu, günlük dosyalarının kaldırılmadan önce 2 kez döndürüldüğü anlamına gelir, bu nedenle logrotate yalnızca yaklaşık 2 dosyaya önem verir.

benim tahminim yapılandırma bir noktada değiştirildi, çünkü daha önce daha fazla günlük dosyaları tutuldu, belki 28 döndürmek gibi bir şeydi. bu eski dosyaları elle kaldırmak zorunda.


Cevabı kanıtlayamıyorum, bu yüzden doğru. Ancak neden access.log.3.gzhala var olduğunu anlamıyorum .
SamK

2
Çünkü döndür 2 yalnızca 2 dosyayı işler, yani .1.gz ve .2.gz ve diğer dosyaları yok sayar.
johnshen64

1
Döndürme 365'i 90 döndürmek için değiştirdim ve access.log.90.gz şu ana kadar değişen en son değişiklik. Access.log.91.gz kaldırıldı (logrotate sadece 90 olduğu için), ancak> 91 değil. Bu yüzden johnshen64 haklı, 2'den bir şeyi kaldırmalısın.
Yvan

İşte bununla otomatik olarak nasıl başa çıkılacağına dair bir ipucu, yani birçok sunucuda yapılandırma yönetimi aracılığıyla: serverfault.com/a/636883/9082
Martijn Heemels

-3

/Var/log/apache2/*.log belirttiğiniz için .gz sonekine sahip günlükler dikkate alınmaz.

Böylece 2 .log ve tüm .gz dosyaları kalır.

Bunu değiştirmek için

/ var / log / apache2 / ** log * veya bazı normal ifadeler.


Üzgünüz
girişten

2
Yıldız işareti sorunu için yayınınızı düzenleyebilirsiniz. Daha genel olarak, kabul edilen cevabın neden yanlış olduğunu düşünüyorsunuz? logrotate, temel ad dosyalarını ister ve gerektiğinde .gz eklemeleriyle ilgilenir.
Law29

Bu yanıt aslında zararlıdır, çünkü en azından bazı logrotate sürümlerinde dosyaların tekrar tekrar döndürülmesine neden olabilir. Önce dosyaları sıkıştırır, ardından sıkıştırılmış dosyalarla eşleşir ve döndürmeye devam eder.
Richlv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.