Tailing dua file log

14

Saya memiliki aplikasi web yang menghasilkan sejumlah file log dengan informasi kinerja. Satu file log menghasilkan waktu eksekusi kode dan yang lainnya menampilkan waktu SQL. Saya tidak memiliki kontrol atas logger atau kode yang menghasilkan file log, tapi saya ingin menampilkan log di satu tempat.

Saat ini saya sedang melakukan sesuatu seperti ini

tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time

Ini menampilkan sesuatu ke konsol setiap kali SQL dieksekusi dalam aplikasi. Tapi saya harus menjalankan kode dalam dua sesi SSH yang terpisah. Namun, apa yang saya ingin dapat mengekor kedua file, dalam sesi SSH yang sama. Apakah ini mungkin?

Codemwnci
sumber

Jawaban:

20

Ya, baris keluaran ekor ditambahkan ke semua file yang diberikan pada baris perintah:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'
Riccardo Murri
sumber
Yah, itu lebih mudah daripada jalanku! (lol, baru saja mengangkat jawaban yang bukan milikku, aku akan membiarkan milikku demi rasa ingin tahu)
Jeremy
4

Lihatlah MultiTail . Itu temanmu.

Anda dapat memiliki beberapa ekor log

 - jendela yang berbeda, 'split' al vim
 - atau menyatukan dua (atau N) aliran menjadi satu tampilan dan
 - Anda dapat memfilter steam dengan regex dan, jika Anda suka,
 - itu akan 'tee' output ke file

http://www.vanheusden.com/multitail/

Di Ubuntu 10.04: sudo apt-get install multitail

Mike Diehn
sumber
2

Yap, menggunakan screenperintah, Anda dapat memiliki 2 sesi bash berjalan pada satu terminal.

  • Lari screenuntuk memulai,
  • Kemudian ketik Ctrl-akemudian S(CATATAN: huruf kapital S) untuk membagi layar menjadi 2.
  • Ctrl-akemudian Tabakan memindahkan Anda di antara dua sesi.
  • Ctrl-akemudian cakan memulai shell di wilayah baru itu.

(Silakan lihat jawaban Riccardo sebelum menggunakan ini, ini jauh lebih sederhana, saya akan meninggalkan ini karena mungkin berguna untuk orang-orang dengan masalah yang sama tetapi berbeda).

Jeremy
sumber
0

Anda dapat menggunakan mkfifo untuk melipatgandakan output ke satu pipa

buat pipa fifo, ekor n file ke pipa, lalu cat pipa

 mkfifo pipeName
 tail file1 &
 tail file2 &
 ...
 tail fileN &
 cat pipeName

saat selesai

 rm pipeName
dvhh
sumber
1
Ini sebenarnya tidak menggunakan fifo; Anda mungkin menginginkan perintah ekor tail fileN >> pipeName.
Jeremy Kerr