Tail vários arquivos de log

3

Eu tenho um aplicativo que gera novos arquivos de log cada vez que é executado. Todos eles vão para uma pasta, com nomes de arquivos como esse, e o próximo log não é iniciado até que o atual seja concluído.

Log-20140122102407.txt
Log-20140122102739.txt
Log-20140122103640.txt
Log-20140122162121.txt
Log-20140122163145.txt

Eu quero monitorar o progresso atual em uma janela de terminal como, tail -fmas isso não funcionará com vários arquivos. Já ouvi falar de multitail, mas não sei como usá-lo e não quero que minha janela do terminal seja dividida em várias seções.

Elliott
fonte

Respostas:

5

rabo

tailpode arrastar vários arquivos. O artigo de Donovan Bray explica mais : tail: pode tail múltiplos arquivos simultaneamente, quem sabia? e outros truques de cauda.

Para ajustar vários arquivos, passe um padrão de arquivo:

tail -f Log-*

multitail

Você pode solicitar que o multitail combine a saída de vários arquivos. A página de exemplos contém abordagens e truques úteis.

Este comando combina e segue dois logs:

multitail /var/log/apache/access.log -I /var/log/apache/error.log

Se você precisar alterar os logs de uma pasta, incluindo aqueles que estão sendo criados ativamente, use o -qsinalizador:

multitail -q 'test*'

Isso reduzirá todos os arquivos correspondentes ao padrão test*, incluindo aqueles que aparecem após o comando ter sido emitido. Obrigado a @ folkert-van-heusden por esta sugestão e correção de código.

Se você tiver o homebrew instalado, poderá instalar multitailusando o comando Terminal.app:

brew install multitail

Veja também:

Graham Miln
fonte
11
Pelo que sei, nenhuma dessas soluções funciona porque não reconhece arquivos de log futuros criados após a digitação do comando.
Elliott
Não conheço nenhuma ferramenta que faça isso. Se o seu comando incluir um curinga *, você poderá pressionar 'Command +'. para interromper a cauda, ​​pressione para cima e, finalmente, pressione enter para retomar o registro com os arquivos mais recentes.
Graham Miln
elliott: você verificou -q e -Q? talvez eles sejam úteis?
Folkert van Heusden
11
normalmente multitail -Q deve funcionar nesse caso, mas notei que ele está quebrado. trabalhando nisso!
Folkert van Heusden
2
Ok, eu corrigi: -q / -Q agora deve funcionar (no multitail v6.1). Testado por: multitail -q 'test *' e depois em outra janela do terminal: sleep 3; eco 1> test1; dormir 3; eco 2> teste2; dormir 3; eco 3> test3; dormir 3; etc.
Folkert van Heusden