Coda di due file di registro


14

Ho un'applicazione Web che genera un numero di file di registro con informazioni sulle prestazioni. Un file di registro genera i tempi di esecuzione del codice e un altro genera i tempi SQL. Non ho alcun controllo sul logger o sul codice che produce i file di registro, ma desidero generare i registri in un unico posto.

Attualmente sto facendo qualcosa del genere

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

Questo genera qualcosa sulla console ogni volta che viene eseguito un SQL nell'applicazione. Ma devo eseguire il codice in due sessioni SSH separate. Tuttavia, ciò che voglio essere in grado di adattare entrambi i file, nella stessa sessione SSH. È possibile?

Risposte:


20

Sì, le righe di output della coda sono state aggiunte a tutti i file forniti nella riga di comando:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'

Bene, è più facile del mio modo! (lol, ho appena votato una risposta che non è la mia, lascerò la mia per amor di curiosità)
Jeremy

4

Dai un'occhiata a MultiTail . È tuo amico.

Puoi avere più code di log in

 - finestre diverse, una "divisione" di Al Vim
 - oppure unisci i due (o N) stream in una vista e
 - puoi filtrare i vapori per regex e, se lo desideri,
 - "collegherà" l'output a un file

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

Su Ubuntu 10.04: sudo apt-get install multitail


2

Sì, usando il screencomando, puoi avere 2 sessioni bash in esecuzione su un terminale.

  • Corri screenper iniziare,
  • Quindi digitare Ctrl-apoi S(NOTA: la S maiuscola) per dividere lo schermo in due.
  • Ctrl-apoi Tabti sposterà tra le due sessioni.
  • Ctrl-aquindi cavvierà una shell in quella nuova regione.

(Vedi la risposta di Riccardo prima di usare questo, il suo è molto più semplice, lo lascio perdere perché potrebbe essere utile per persone con problemi simili ma diversi).


0

È possibile utilizzare mkfifo per multiplexare l'output su una pipe

crea un tubo da quindici, coda n file al tubo, quindi cat il tubo

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

Al termine

 rm pipeName

1
Questo in realtà non usa il FIFO; probabilmente vuoi che siano i comandi tail tail fileN >> pipeName.
Jeremy Kerr,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.