Seguir dos archivos de registro


14

Tengo una aplicación web que genera varios archivos de registro con información de rendimiento. Un archivo de registro genera tiempos de ejecución de código y otro genera tiempos de SQL. No tengo control sobre el registrador o el código que produce los archivos de registro, pero quiero generar los registros en un solo lugar.

Actualmente estoy haciendo algo como esto

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

Esto genera algo en la consola cada vez que se ejecuta un SQL en la aplicación. Pero tengo que ejecutar el código en dos sesiones SSH separadas. Sin embargo, lo que quiero ser capaz de seguir ambos archivos, en la misma sesión SSH. es posible?

Respuestas:


20

Sí, la cola genera líneas agregadas a todos los archivos dados en la línea de comando:

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

Bueno, eso es más fácil que a mi manera! (risas, solo voté por una respuesta que no es mía, la dejaré por curiosidad)
Jeremy

4

Echa un vistazo a MultiTail . Es tu amigo.

Puede tener las múltiples colas de registro en

 - diferentes ventanas, una 'división' de al vim
 - o haga que combine las dos (o N) transmisiones en una vista y
 - puede filtrar los vapores por expresiones regulares y, si lo desea,
 - 'tee' la salida a un archivo

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

En Ubuntu 10.04: sudo apt-get install multitail


2

Sí, usando el screencomando, puede tener 2 sesiones bash ejecutándose en una terminal.

  • Corre screenpara comenzar,
  • A continuación, escriba Ctrl-aa continuación S(NOTA: S mayúscula) para dividir la pantalla en 2.
  • Ctrl-aluego Tabte moverá entre las dos sesiones.
  • Ctrl-aentonces ccomenzará un shell en esa nueva región.

(Vea la respuesta de Riccardo antes de usar esto, la suya es mucho más simple, dejaré esto para arriba ya que puede ser útil para personas con problemas similares pero diferentes).


0

Puede usar mkfifo para multiplexar la salida a una tubería

crea una tubería de quince, ajusta los archivos a la tubería, luego atrapa la tubería

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

cuando esté terminado

 rm pipeName

1
Esto en realidad no usa el fifo; probablemente quieras que sean los comandos de cola tail fileN >> pipeName.
Jeremy Kerr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.