Günlük belirli bir boyutu aşmadığı sürece günlüğü bir aralığa göre nasıl döndürürüm?


20

Logrotate'in man sayfasından:

küçültülmüş boyut
Günlük dosyaları boyut baytlarından daha büyük olduklarında, ancak ek olarak belirtilen zaman aralığından (günlük, haftalık, aylık veya yıllık) önce döndürülmediklerinde döndürülür. İlgili boyut seçeneği, zaman aralığı seçenekleriyle karşılıklı olarak dışlanması ve günlük dosyalarının son dönüş süresine bakılmaksızın döndürülmesine neden olması dışında benzerdir. Küçültme kullanıldığında, günlük dosyasının boyutu ve zaman damgası dikkate alınır.

boyut boyutu
Günlük dosyaları boyut baytlarından daha büyük olduklarında döndürülür. Ebatın ardından k gelirse, ebatın kilobayt olduğu varsayılır. M kullanılırsa, boyut megabayt cinsindendir ve G kullanılıyorsa boyut gigabayt cinsindendir. Yani 100 beden, 100k beden, 100M beden ve 100 bedenTüm geçerli.

Ben set boyutunu olarak 5M ve aralık olarak haftalık günlükleri Günlük boyutunun 5M aşarsa oluşacak haftalık olarak ve ek rotasyonuna döndürülmüş alacağı düşünme. Ancak olan şey, 5M'yi aşmadığı sürece kütüğün döndürülmemesidir, bu da küçük boyutun yapması gerektiği gibi görünmektedir .

Kılavuzu yanlış mı yorumluyorum? Günlüğün haftalık olarak dönmesini ve 5 milyondan fazla olması durumunda günlük kaydını nasıl alabilirim?

DÜZENLE:

Aşağıdaki bilgilerin alakalı olup olmadığından emin değilim, sadece ek olarak:

Mesajlar, güvenli, cron, maillog, önyükleme için ana günlük kaydı yapmak için rsyslog kullanıyorum. Boyut ve aralığın yukarıda açıklandığı gibi ayarlandığı sondan bir önceki günlüklerin dönüş tarihi ve dosya boyutu aşağıdadır:

filename  rotation date  file size
messages  20130129       5.3MB
secure    20130113       5.1kB
cron      20130113       3.6kB
maillog   20130113       1.1kB

Görüldüğü gibi, yalnızca iletiler döndürülür.

EDIT2:

Kontrol etmeliydim man logrotate. Onlar aslında maxsize seçeneği ile yükseltti . Aradığım şey bu olmalı:

maksimum boyut
Günlük dosyaları, ek olarak belirtilen zaman aralığından (günlük, haftalık, aylık veya yıllık) önce bile boyut baytlarından daha büyük olduklarında döndürülür. İlgili boyut seçeneği, zaman aralığı seçenekleriyle karşılıklı olarak dışlanması ve günlük dosyalarının son dönüş süresine bakılmaksızın döndürülmesine neden olması dışında benzerdir. Maksimum boyut kullanıldığında, günlük dosyasının boyutu ve zaman damgası dikkate alınır.

Yanıtlar:


24

Burada bazı sorular cevaplanıyor: günlük logrotate ve boyut?

Tipik olarak logrotatesadece günde bir kez çalıştırılacağı için boyut sınırları tam olarak yerine getirilmeyecektir. logrotate'ın durum dosyası (muhtemelen /var/lib/logrotate.status) yalnızca tarihleri ​​(saatleri değil) depolar, daha sık kullanım için tasarlanmamıştır, bu nedenle dosyaları daha sık döndüremezsiniz ( Güncelleme : sürüm 3.85 saatlik destek ekler ve durum dosyasına tam bir zaman damgası depolar .)

Sen hangi söyleme syslogdsen kullandığınız rsyslog ve syslog-ng Boyuta göre döndürülmesi olanlar elde edebilmek ve almalısınız yüzden destek kendi kendini yöneten boyut tabanlı rotasyonu logrotatebazı düşünce için gerekli olabilir gerçi (döndür haftalık etmek eşzamanlı dosya döndürmenin bir şeyi yanlışlıkla silmediğinden emin olmak için dosya adlandırma).

Başka bir seçenek de tıpkı Apache gibi borulu günlükleri kullanmaktır, aslında Apache-2.4'ler rotatelogs tam olarak bu özelliği destekler (önceki sürümler yalnızca boyutu veya zamanı bağımsız olarak destekledi). Günlüklerin nereden kaynaklandığını söylemezsiniz, ancak bir boruya veya fifoya oturum açabilir ve rotatelogsdestekleniyorsa kullanabilirsiniz.

İle logrotate<= v3.8.0 desteklenen üç senaryo vardır:

  1. boyut , geçen zamandan bağımsız olarak, günde en fazla bir kez boyuta göre döndürülür
  2. timeperiod , boyutuna bakılmaksızın koşulsuz olarak timeperiod tarafından döndürülür
  3. minsize ve timeperiod günlük dosyası boyutu minSize aşıyorsa, o zaman TIMEPERIOD döndürün. Yaygın bir kullanım "küçük boyut 1" dir, yani 0 baytlık günlükler döndürülmez, bu da dağınıklığı en aza indirir.

logrotate-3.8.1 ekler:

  1. maksimum boyut ve zaman aralığı , boyutlar maksimum boyutu aştığında veya geçen zaman dilimi sonrasında döner. logrotatebu durumda günde bir kez varsayılandan daha fazla çalıştırılması gerekebilir.

logrotate-3.8.5 ekler:

  1. saatlik destek ve durum dosyasında tam bir zaman damgası depolar. Bunun için logrotate(en az) saat başı koşmalısınız.

Lütfen güncellememe bakın, bağlantı için teşekkürler. Bazı komut dosyaları gerekli gibi mi görünüyor? minsize çok kullanışlı görünmüyor, neden maxsize yerine sahip olduklarını merak ediyorum.
Question Overflow

1
Yay, maksimum boyut seçeneği artık mevcut. Vaka kapat :)
Soru Taşması

Güncellemenizi okumadan önce dokümanlarda ... cevabının artık genişlediğini fark ettim. Teşekkür.
mr.spuratic

1
> logrotate durum dosyası (muhtemelen /var/lib/logrotate.status) yalnızca tarihleri ​​saklar (saatleri değil) Bu ifade güncel olmayabilir. Logrotate durum dosyamı kontrol ettim ve ikinci çözünürlükte zaman damgaları içeriyordu: "/var/log/kern.log" 2018-3-12-1: 8: 16
hyperair
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.