Logrotate'te delaycompress seçeneği ne zaman kullanılır?


33

Adamın sayfası logrotateşöyle diyor:

It can be used when some program cannot be told to close its logfile
and  thus  might  continue writing to the previous log file for some
time.

Bununla kafam karıştı. Bir programın günlük dosyasını kapatması söylenemezse, bir süre için değil sonsuza kadar yazmaya devam eder . Sıkıştırma sonraki döndürme döngüsüne ertelenirse, program sonraki döndürme döngüsünden sonra bile bu dosyaya yazmaya devam eder. Erteleme sorunu çözme nasıl?

Anladığım kadarıyla, copytruncatebir programa günlük dosyasını kapatması söylenemediğinde kullanılmalıdır. Kopyalama işlemi devam ederken kayıt dosyasına yazılan bazı verilerin kaybolduğunun farkındayım.

Ben CouchDB için logrotate dosyasına bakıyordum ve de vardı copytruncateve delaycompressseçenekleri.

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}

Kullanarak anlamı yok gibi görünüyor delaycompresszaman copytruncatezaten orada. Neyi kaçırıyorum?

Yanıtlar:


27

Anlayışınız copytruncatedoğru, ancak mankendeki ifadeler delaycompressbiraz yanıltıcıdır. Daha doğrusu, "bazı programlar derhal günlük dosyasını kapatması söylenemediğinde" demelidir - örneğin, paylaşılan komut dosyaları kullanıyorsanız ve komut dosyası tüm günlük dosyaları döndürüldüğünde günlüğü kullanan işleme bir sinyal gönderir .


1
Kullanırken copytruncate, programın log dosyasını kapatmasını söylememe gerek yok. Öyleyse delaycompressbirlikte belirtmek anlamsız copytruncatemı?
Anand Chitipothu,

6
Asla kullanmayın copytruncateEğer sürece kesinlikle bu günlük girişlerini kaybeder çünkü gerek. Sağlayan diğer özelliği delaycompress- ilk önce sıkıştırmasını açmaya gerek kalmadan önceki günlük dosyasını okuma yeteneği istiyorsanız, her iki seçeneği de kullanabilirsiniz .
womble

copytruncateProgramıma yeniden yüklenmesini söyleyemem dışında bir seçenek var mı ?
Anand Chitipothu

5
Hayır. Bu yüzden emmeyen ve “günlüklerini yeniden yükle” diyecek bir sinyali kabul edecek yazılımı kullanmalısınız.
womble

3

Sorunuzu tamamen anladığımdan emin değilim, ama ne düşündüğümü soruyorsanız ... Bunu kullanırım:

postrotate
          killall -HUP syslog-ng
  endscript

Kütüğü öldürmek ve bir sonrakine geçmek için güzel (ya da en azından bir) yol. Cisco'nun saniyede tonlarca veri kaydeden ASA platformu gibi emilen "programlar" için çalışır.


3

Kullanırız:

  • günlük
  • delaycompress
  • nodateext

Bu, Apache'nin sabit bir kopyasını yaratır, access_log access_log.1böylece Stats paketimizi günün sonunda bir script olarak çalıştırabiliriz.

Ertesi gün logrotate oluşturduğu dosyayı sıkıştırır access_log.2.zip

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.