Tailing dwa pliki dziennika

14

Mam aplikację internetową, która generuje dane wyjściowe do wielu plików dziennika z informacjami o wydajności. Jeden plik dziennika generuje czasy wykonania kodu, a drugi generuje czasy SQL. Nie mam kontroli nad programem rejestrującym ani kodem, który generuje pliki dziennika, ale chcę wyprowadzać dzienniki w jednym miejscu.

Obecnie robię coś takiego

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

To wysyła coś do konsoli za każdym razem, gdy SQL jest wykonywany w aplikacji. Ale muszę uruchomić kod w dwóch oddzielnych sesjach SSH. Jednak to, co chcę być w stanie dopasować oba pliki, w tej samej sesji SSH. czy to możliwe?

Codemwnci
źródło

Odpowiedzi:

20

Tak, linie wyjściowe tail dołączane do wszystkich plików podanych w wierszu poleceń:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'
Riccardo Murri
źródło
Cóż, to łatwiejsze niż moja droga! (lol, właśnie głosowałem odpowiedź, która nie jest moja, zostawię moją ze względu na ciekawość)
Jeremy
4

Spójrz na MultiTail . To twój przyjaciel.

Możesz mieć wiele ogonów dziennika

 - różne okna, „podział” al vima
 - lub sprawi, że połączy dwa (lub N) strumienie w jeden widok i
 - możesz filtrować pary według wyrażenia regularnego, a jeśli chcesz,
 - przeniesie dane wyjściowe do pliku

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

W systemie Ubuntu 10.04: sudo apt-get install multitail

Mike Diehn
źródło
2

Tak, używając screenpolecenia, możesz mieć 2 sesje bash uruchomione na jednym terminalu.

  • Uruchom, screenaby zacząć
  • Następnie wpisz Ctrl-anastępnie S(UWAGA: kapitał S), aby podzielić ekran na 2.
  • Ctrl-anastępnie Tabprzeniesie Cię między dwiema sesjami.
  • Ctrl-anastępnie curuchomi powłokę w tym nowym regionie.

(Proszę zapoznać się z odpowiedzią Riccardo przed użyciem, jego jest znacznie prostsze, pozostawię to, ponieważ może być przydatne dla osób z podobnymi, ale różnymi problemami).

Jeremy
źródło
0

Możesz użyć mkfifo, aby zwielokrotnić wyjście do jednej potoku

utwórz fajkę fifo, dołącz do niej pliki n, a następnie nadaj jej kształt

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

gdy zakończono

 rm pipeName
dvhh
źródło
1
To tak naprawdę nie korzysta z fifo; prawdopodobnie chcesz, aby były to polecenia ogona tail fileN >> pipeName.
Jeremy Kerr,