logrotate yapılandırma dosyası sözdizimi - çoklu joker girişler mümkün mü?


83

Kılavuz sayfası sorumu cevaplamadığından ve bir rotasyon döngüsünü zorlamak istemediğim için soruyu burada sormaya karar verdim.

Logrotate için man sayfası aşağıdaki örneği verir:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

Joker karakterler içeren tüm örnekler yalnızca tek bir giriş içerir. Şimdi ilgilendiğim şey, buna izin verilip verilmeyeceği:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

İşte akıl yürütme: Birden fazla vhost'um var ve onları bu vhost'lara "sahip olan" kullanıcı tarafından böldüm. Günlük dosyaları dünyaca okunabildiğinden, bir klasörü kullanıcı giriş dizinine bağlamak istiyorum, ancak kullanıcının "sahip olduğu" günlük dosyalarını sınırlandırmak; -mounting zaten bu düzeni gerektirir). Bu nedenle, hem günlük dosyalarını hem de altındaki /var/log/httpdtüm günlük dosyalarını, bu dizinin alt dizinleri altında döndürmek için bir çözüm arıyorum - her bir alt dizini adıyla listelemek zorunda kalmadan.

Genel olarak, man sayfası, joker karakter kuralları için mi yoksa yalnızca tam yollar için birden fazla girişin mümkün olup olmadığı hakkında hiçbir ipucu vermez. Debian "Squeeze" ile birlikte gelen 3.7.8-6 logrotate sürümünü kullanıyorum, ancak bunun bir dağıtım veya program sürümüne özgü olmadığını düşünüyorum.

Yanıtlar:


119

Evet, birden fazla joker kart kullanabilirsiniz. Dosyanızı gerçek döndürmeler yapmadan, bunu yaparak test edebilirsiniz:

logrotate -d -f /etc/logrotate.conf
  • -d = Hata ayıklama modunu açar. Hata ayıklama modunda, günlüklerde veya logrotate durum dosyasında hiçbir değişiklik yapılmayacaktır.

  • -f = Bunun gerekli olmadığını düşünse bile, rotasyona zorlamak için logrotate'e bildirir. Bazen bu, logrotate'e yeni girişler ekledikten sonra ya da eski dosyalar elle kaldırılmışsa, yeni dosyalar oluşturulacağından ve günlük kaydı doğru şekilde devam ederse faydalı olabilir.


3
çok teşekkürler! Sadece denedim ve işe yarıyor. Çıktıdan, joker karakterlerin kabukta olduğu gibi çalışması beklenebileceği anlaşılıyor.
0xC0000022L

24

Sadece açıklığa kavuşturmak istedim, çünkü burada yapmayı istediğim şey buydu.

Tek bir yapılandırma için birden fazla günlük dosyasının belirtilmesine izin verilir, örn.

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

//, Birden fazla satırda meydana gelen farklı yollarda bir sorun yok mu?
Nathan Basanese,

@NathanBasanese Sorunuzu tam olarak anlamadım, yol çizgilerini istediğiniz diskteki dosyalara yönlendirebilirsiniz, hepsinin aynı dizin ön ekinde olmaları gerekmez.
ThorSummoner

@NathanBasanese, sanırım, farklı çizgiler üzerinde çoklu günlük rotasyon hedeflerine sahip olmak normal bir kullanım gibi görünüyor, bu formu diğer logrotate.d betiklerinden kopyaladım, örneğin /etc/logrotate.d/rsyslog
ThorSummoner

4

Logrotate için man sayfasından :

Günlük dosyası adlarının tırnak işaretleri içine alınabileceğini unutmayın (ve ad boşluk içeriyorsa, tırnak işaretleri gerekir). Normal kabuk alıntı kuralları, ', "ve \ karakterleri ile birlikte uygulanır.

Lütfen, tekliden çoklu modele giderken tırnak işaretlerini değiştirmeyi veya kaldırmayı unutmayın:

Bu çalışıyor:

/var/log/*.log /var/log/*.blog {

bu da çalışır:

/var/log/*.log
/var/log/*.blog {

Bu çalışmıyor:

'/var/log/*.log /var/log/*.blog' {

ve bunların hiçbiri:

"/var/log/*.log /var/log/*.blog" {

Tek kalıp kılıfı ile karşılaştırın.

Bu çalışıyor:

'/var/log/*.log' {

ve bu da çalışır:

"/var/log/*.log" {

Logrotate 3.10.0 ile test edildi


2
Bunun işe "/var/space /log/*.log" "/var/log/*.blog"
yarayıp yaramadığını
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.