Zaman zaman döndürülen kuyruklu günlükleri sürekli olarak izleyin


21

Birkaç kütüğü sürekli izlemek için kuyruk kullanıyoruz, ancak bir kütük döndürüldüğü zaman o dosyanın kuyruğu durur.

Anladığım kadarıyla sorun şu ki, günlük döndürüldüğünde oluşturulan yeni bir dosya var ve çalışan kuyruk işlemi bu yeni dosya tanıtıcı hakkında hiçbir şey bilmiyor.

Yanıtlar:


34

Ah, bunun için bir bayrak var.

kullanmak yerine tail -f /var/log/filekullanmalıyıztail -F /var/log/file


tail -Folduğu tail --follow=name --retrygibi çevirir ;

  • --follow=name: dosya tanıtıcısı yerine dosyanın adını takip edin
  • --retry: dosyaya erişilemiyorsa, ölmek yerine daha sonra tekrar deneyin

Neden "-f" seçeneğine bile sahipler? Bu varsayılan olmalı!
Dominic Cerisano

27
# tail --follow=mylog.log

Gönderen adam kuyruk :

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

Yani bu durumda -Fseçeneği kullanarak doğru olacaktır.

-F     same as --follow=name --retry

11

Kesin cevap işletim sisteminize bağlıdır - ancak çoğu durumda tail -Fdoğru olanı yapar.


3
Kuyruk -F çalışmıyorsa, işe yarayan bir kuyruk -F sürümü derleyin. Diğer alternatif, çılgın şehre giden kısa bir yoldur.
chris


2

IMHO, günlük dosyanızı tarihe göre değil, BOYUTU ile değiştirmek biraz garip. Çoğu sistem günlüğü (unix veya linux'da) haftalık veya aylık olarak döner ve büyüklüğüne bağlı değildir ... Bu, çeşitli nedenlerle sevdiğim bir şey ve ayrıca uygulandığı takdirde sorununuzu çözecek bir şeydir.

Sekiz yıl sonra, burada neden bahsettiğimi bilmiyorum: boyutuna göre döndürmek istediğiniz tonlarca yer var, çünkü günlük / haftalık / aylık rotasyonlar ciddi sorunlara neden olabilecek MASSIVE dosyalar verebilir.

Daha deneyimli bir bakış açısına göre, asıl soru neden oturmak ve sürekli o kadar hızlı büyüyen bir dosyayı sürekli olarak kuyruktan geçirmek istediğinizde… Matrix akışını izleyerek izlemek gibi bir şey.

Bu günlerde, Splunk veya Sumologic gibi bazı büyük veri günlüğü topluluğuna bakıp, günlüğü olaylarını sınıflara filtreleyebileceği ve belirli günlük değerlerine göre tetikleyebileceği daha iyi olurdu ... Canlı günlükleri hiç izlemeye gerek yok.


Katılıyorum ve bu benim araştırmam gereken farkına vardığım bir şey. Umarım log4j destekliyor. Teşekkürler!
DivideByHero

1
Boyuta göre rotasyonun bir açık avantajı, tüm log setlerinin bilinen bir boyuttan daha az olacağından emin olabilirsiniz.
Jim Zajkowski

1

Üretim sunucumda komutu kullanıyorum:

tail --follow var/log/apache-access_log --retry

-1

Ayrıca, amaçlarınız için biraz fazla zor olabilir, ancak ayrılmanız, tam olarak istediğiniz şeyi yapmak için kuyruk özelliğine sahiptir. 500 MB / gün'e kadar ücretsizdir, ancak verileriniz boyutunun ötesinde ise, maliyete değmez.

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.