günlük ve boyutta logrotate?


40

Bir logrotate config "size" ve "daily" parametrelerle belirtilirse, hangisi öncelikli olur? Bu nerede belgelenmiştir? Bu rotasyonların bir boolean OR işlemi olarak gerçekleşmesini istiyorum, yani, günlükler bir gün eskiyse döndürülürler, VEYA belirli bir boyuttan daha büyüklerse de döndürülürler. Ancak, logrotate şu anda yalnızca "boyut" direktifini kullanıyor ve "günlük" yönergeyi yok sayıyor gibi görünüyor. Logrotate her saat çalışacak şekilde ayarlandı. İşletim sistemi linux, Red Hat ve Debian türevleridir.

Ayrıca, ilk önce "önce", sonra da "boyut" dan başlayarak dosyanın başlangıcını belirtiyorum. Siparişin önemli olup olmadığından emin değilim, ancak her durumda, birinin config dosyasında ilk önce gelmesi gerekir ...

Teşekkürler!



> yerel tanımlar küresel olanları geçersiz kılar ve sonraki tanımları> daha önceki olanları logrotate 3.8.7 sayfasından geçersiz kılar
John Bob Joe

Yanıtlar:


61

Eğer boyutu talimatı kullanıldığında, logrotate yok sayacaktır günlük , haftalık , aylık ve yıllık direktiflerini. Bu, man logrotatekomutu çalıştırdığınızda belgelerde açık değildir . Ancak pratikte onaylanabilir ve bunun gibi bazı blog yazılarında da bahsedilir .

Minrote adında bir yönerge , logrotate man sayfasına göre zamana göre kullanılabilecek tek boyut yönergesidir. Ancak, hala istediğin şey değil. Kullanılması minSize ile günlük temelde diyor ki: günlük günlükleri döndürmek, ancak boyut olarak en az #MB altındadır sadece .

Bugüne kadar, gerek duyduğunuz koşulu yerine getirmek için logrotate ile bir yol bulamadım: büyüklüğü #MB'yi geçmediği sürece her gün, bu durumda hemen dönün . Bunun yalnızca logrotate yönergeleri kullanılarak desteklendiğini sanmıyorum. Prerotate , postrotate , firstaction ve lastaction gibi script kanca direktifleri aracılığıyla bazı akıllı komut dizileriyle yapmak mümkün olabilir .

Güncelleme :

Logrotate 3.8.1 itibariyle maxsizeve timeperiodideal bir çözüm olacağını, birlikte desteklenmektedir. Bu yazının cevabına bakınız: Kayıt belirli bir boyutu aşmadığı sürece, aralığa göre günlük nasıl döndürülür?


4
En iyi seçenek muhtemelen iki ayrı cron komutunu kullanmak, varsayılan conf ile günlük olarak çalıştırmak için çalıştırmak ve günlük yönergeyi kullanarak değil, yalnızca direktifini kullanarak taşma konusunda endişelendiğiniz dosyaları içeren bir yapılandırma gerektiren her x dakikada bir olacaktır.
SilverbackNet

8
3.81 logrotate maxsizeve timeperioddesteklenmektedir. Başına serverfault.com/questions/474941/...
Belacqua

1
@ belacqua 3.8.7 kullanıyorum ve timeperiod erkekte yok.
JorgeeFG

Doğru sürüm aslında 3.8.1'dir, 3.81 değil.
Tom Miller

2

@Egg'nin ilk cevabı, logrotate konusundaki deneyimlerime göre doğru değil!

Eğer günlük, aylık, ... gel ilk ve bundan sonra boy direktifi, günlük, aylık, ... gözardı edilecek ve boyut yönergesi günlük dosyasına uygulanır.

Benzer şekilde, ilk önce boy direktifini kullandıktan sonra günlük, haftalık, aylık ve yıllık direktifleri kullandığımda, boyut direktifleri dikkate alınmayacaktır.


1

Günlük eklerseniz, Boyut koşulu yerine getirilse bile her gün dönecek. Siz de boyut koşulunu eklerseniz, günlüklemenin ne kadar ayrıntılı olduğuna bağlı olarak bir günde iki dönüş alabilirsiniz.

Eğer Daily senaryoda ilk önce girerse, Boyut patlamaz.


hangi kuralların kullanıldığını görmek için ayrıntılı seçeneğini kullanın. Testlerimden yalnızca son kuralın kullanıldığına inanıyorum, çünkü daha spesifik kurallar daha genel kuralları geçersiz kılabilir.
Bram,

Beklenen davranış olduğu gibi daha fazla rotasyon tamamdır. (boole VEYA) Ancak benim sorunum bu rotasyonların gerçekleşmemesidir. Yönergelerin önemli olduğunu veya hiçbir yerde belgelendiğini göremediğim için log döndürmenin bir hatası (muhtemelen bir özelliği) gibi görünüyor.
kedi pantolonu

logrotate.conf dosyanızın ve hedeflemeye çalıştığınız dosyaların bir örneğini verebilir misiniz? Günlük, zamanın ilerleyişinden başka bir koşulda değildir. Boyut şartlı.
Paul Hickox

/tmp/output.log {günlük beden 1k 5 döndürür}
kedi pantolonu

1
Boyut 1k daha büyük olduğunda bu dosya döndürülmüş alır, ama bir değil beklenen ve istenen şekilde günlük döndürülmüş.
kedi pantolonu

1

Aslında, Red Hat hakkındaki man sayfam, boyut ve minsiz arasındaki farklar konusunda oldukça net görünüyor.

Minsize boyutu

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
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.