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?

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)'

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


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).


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

1
Na verdade, isso não usa o fifo; você provavelmente quer que os comandos de cauda sejam tail fileN >> pipeName.
Jeremy Kerr
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.