it-swarm-tr.com

Logrotate: "log döndürmeye gerek yok" neden?

Aşağıdaki yeni logrotate yapılandırması var:

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

Çalıştığımda logrotate -d nexus, Aşağıdakileri alıyorum:

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/klasörüm aşağıdakileri içerir:

nexus.log
oldlogs.tar.gz

LogRotate neden nexus.log dosyasını döndürmüyor? Ne bekliyordum nexus.log dosyası kesilmiş olacaktı ve nexus.log-201106241000 gibi yeni bir dosya oluşturulacaktı.

60
Rich

Büyük olasılıkla, günlük dosyası bir günden daha eski değildir ve/veya son gün içinde döndürülmüş ve logrotate geçmişi hatırlar.

-f Eklerseniz, gerçekten isterseniz döndürmeyi zorlar (bunun -d İle nasıl etkileşime girdiğinden% 100 emin olmasanız da).

Geçmişe bakabilirsiniz, konum dağıtımınıza bağlıdır, ancak /var/lib/logrotate/status Olabilir. Bu dosya, günlüklerin en son ne zaman döndürüldüğünü gösterir.

68
EightBitTony

Logrotate'i yeni bir günlük yapılandırmasıyla ilk kez çalıştırdığınızda, son günlük dönüşünün ne zaman gerçekleştiğini bilmez, bu nedenle bugün çalıştırıldığı etkiye /var/lib/logrotate/status İçindeki bir durum satırı yazar.

Ertesi gün çalıştığında, günlüğün bir günlük olduğunu görür ve beklendiği gibi döndürür. Beklemek istemiyorsanız, logrotate'in durum dosyasını düzenleyin ve günlüğünüzün durum tarihini bir önceki güne getirin.

Logrotate'i manuel olarak çalıştırdığınızda, beklendiği gibi çalışacaktır

61
Tony Sweeney

Bazen logrotate komutunu manuel olarak çalıştırsanız bile, aynı gün yaparsanız ve varsayılan değer senconds içermeyen dateext varsa bu çalışmaz (ör. -%Y%m%d). Logrotate'in durum dosyasını değiştirseniz veya boyut yönergesi kullanırken bile (ör. size 200M). En azından CentOS 6'da logrotate, zaten var olduğu için günlük dosyanızı döndüremez.

Bunu çözmek için dateformat yerine dateext kullanmanız gerekir: %Y%m%d%s.

Görmek man logrotate daha fazla bilgi için.

5
emerino

Kaçarak dikkat edin

logrotate -vdf /etc/logrotate.conf

yalnızca simüle edilmiş olmasına rağmen etkinlik /var/lib/logrotate.status ve sonraki logrotate çalıştırmaları, belirtilen

log does not need rotating
1
helvete