Terus memantau log dengan ekor yang kadang-kadang diputar

21

Kami menggunakan tail untuk terus memonitor beberapa log, tetapi ketika sebuah log diputar, tail untuk file itu akan berhenti.

Sejauh yang saya mengerti, masalahnya adalah ketika log diputar, ada file baru dibuat, dan proses ekor yang berjalan tidak tahu apa-apa tentang pegangan file baru itu.

xkcd150
sumber

Jawaban:

34

Ah, ada bendera untuk ini.

alih-alih menggunakan tail -f /var/log/filekita harus menggunakantail -F /var/log/file


tail -Fditerjemahkan tail --follow=name --retrysebagai dalam;

  • --follow=name: ikuti nama file alih-alih deskriptor file
  • --retry: jika file tidak dapat diakses, coba lagi nanti daripada mati
xkcd150
sumber
Mengapa mereka bahkan memiliki opsi "-f"? Ini harus menjadi default!
Dominic Cerisano
27
# tail --follow=mylog.log

Dari ekor manusia :

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.

Jadi dalam hal ini menggunakan -Fopsi akan benar.

-F     same as --follow=name --retry
djhowell
sumber
11

Jawaban yang tepat tergantung pada OS Anda - tetapi dalam banyak kasus, tail -Fakan melakukan hal yang benar.

Jim Zajkowski
sumber
3
Jika tail -F tidak berfungsi, kompilasi versi tail -F yang berhasil. Alternatif lain adalah jalan pendek ke kota gila.
chris
5

tail -F atau tail --follow = nama

retracile
sumber
2

IMHO, ini agak aneh untuk mengubah file log Anda dengan SIZE daripada berdasarkan tanggal. Kebanyakan log sistem (dalam unix atau linux) berputar secara mingguan atau bulanan, dan bukan berdasarkan ukuran ... Ini adalah sesuatu yang saya sukai karena berbagai alasan, dan juga sesuatu yang, jika diterapkan, akan menyelesaikan masalah Anda.

Delapan tahun kemudian, saya tidak tahu apa yang saya bicarakan di sini: ada banyak tempat di mana Anda ingin memutar berdasarkan ukuran, karena rotasi harian / mingguan / bulanan dapat menghasilkan file MASSIVE yang dapat menyebabkan masalah serius.

Dari perspektif yang lebih berpengalaman, pertanyaan sebenarnya adalah mengapa Anda ingin duduk dan terus-menerus mengekor file yang tumbuh begitu cepat sehingga Anda memutarnya lebih dari setiap hari ... Ini seperti menonton aliran Matrix.

Saat ini Anda akan lebih baik mencari ke agregasi log data besar seperti Splunk atau Sumologic, di mana ia dapat menyaring peristiwa log ke dalam kelas dan pemicu berdasarkan nilai log tertentu ... Tidak perlu untuk menonton log langsung sama sekali.

Satanicpuppy
sumber
Saya setuju dan ini adalah satu hal yang saya sadari harus saya perhatikan. Semoga log4j mendukungnya. Terima kasih!
DivideByHero
1
Satu keuntungan yang jelas dari rotasi berdasarkan ukuran adalah Anda dapat yakin seluruh rangkaian log akan kurang dari beberapa ukuran yang diketahui.
Jim Zajkowski
1

Saya menggunakan perintah di server produksi saya:

tail --follow var/log/apache-access_log --retry
womble
sumber
-1

Juga, ini mungkin agak terlalu berat untuk tujuan Anda, tetapi splunk memiliki fitur ekor untuk melakukan apa yang Anda inginkan. Ini gratis hingga 500 MB / hari, tetapi jika ukuran data Anda melebihi itu tidak akan sebanding dengan biayanya.

pisau pendakian
sumber