Seguindo dois arquivos de log

14

Eu tenho um aplicativo da web que gera um número de arquivos de log com informações de desempenho. Um arquivo de log gera tempos de execução de código e outro gera tempos de SQL. Não tenho controle sobre o criador de logs ou o código que produz os arquivos de log, mas quero gerar os logs em um único local.

Atualmente estou fazendo algo parecido com isto

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

Isso gera algo para o console toda vez que um SQL é executado no aplicativo. Mas eu tenho que executar o código em duas sessões SSH separadas. No entanto, o que eu quero ser capaz de ajustar os dois arquivos, na mesma sessão SSH. Isso é possível?

Codemwnci
fonte

Respostas:

20

Sim, as linhas de saídas finais anexadas a todos os arquivos fornecidos na linha de comando:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'
Riccardo Murri
fonte
Bem, isso é mais fácil do que meu caminho! (lol, apenas upvoted uma resposta que está não a minha, eu vou deixar meu up por curiosidade)
Jeremy
4

Dê uma olhada no MultiTail . É seu amigo.

Você pode ter várias caudas de log em

 - janelas diferentes, a divisão de um al vim
 - ou para mesclar os dois (ou N) fluxos em uma visualização e
 - você pode filtrar os steams por regex e, se quiser,
 - 'tee' a saída para um arquivo

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

No Ubuntu 10.04: sudo apt-get install multitail

Mike Diehn
fonte
2

Sim, usando o screencomando, você pode ter 2 sessões bash em execução em um terminal.

  • Corra screenpara começar,
  • Em seguida, digite Ctrl-a, em seguida, S(NOTA: S maiúsculo) para dividir a tela em duas.
  • Ctrl-aentão Tabvocê o moverá entre as duas sessões.
  • Ctrl-aentão ciniciará um shell nessa nova região.

(Por favor, veja a resposta de Riccardo antes de usar isso, ele é muito mais simples, deixarei isso como pode ser útil para pessoas com problemas semelhantes, mas diferentes).

Jeremy
fonte
0

Você pode usar o mkfifo para multiplexar a saída em um pipe

crie um cachimbo fifo, arraste n arquivos para o cachimbo e depois cat

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

quando terminado

 rm pipeName
dvhh
fonte
1
Na verdade, isso não usa o fifo; você provavelmente quer que os comandos de cauda sejam tail fileN >> pipeName.
Jeremy Kerr