Monitora continuamente logs com cauda que são girados ocasionalmente

20

Estamos usando o tail para monitorar continuamente vários logs, mas quando um log é girado, a cauda desse arquivo é interrompida.

Tanto quanto eu entendo, o problema é que quando o log é girado, há um novo arquivo criado, e o processo de cauda em execução não sabe nada sobre esse novo identificador de arquivo.

    
por xkcd150 13.08.2009 / 14:33

7 respostas

30

Ah, há uma bandeira para isso.

em vez de usar tail -f /var/log/file , devemos usar tail -F /var/log/file

tail -F traduz a tail --follow=name --retry como em

  • --follow=name : siga o nome do arquivo em vez do descritor de arquivo
  • --retry : se o arquivo estiver inacessível, tente novamente mais tarde em vez de morrer
por 13.08.2009 / 14:39
27
# tail --follow=mylog.log

De man tail :

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

Portanto, neste caso, usar a opção -F seria correto.

-F     same as --follow=name --retry
    
por 10.11.2009 / 21:24
11

A resposta exata depende do seu sistema operacional - mas, em muitos casos, tail -F fará a coisa certa.

    
por 10.11.2009 / 21:22
5

cauda -F or tail --follow = name

    
por 13.08.2009 / 14:38
1

Eu uso o comando no meu servidor de produção:

tail --follow var/log/apache-access_log --retry
    
por 21.07.2010 / 03:42
1

IMHO, é um pouco estranho alterar seu arquivo de log por SIZE em vez de por data. A maioria dos logs do sistema (em unix ou linux) roda semanalmente ou mensalmente, e não com base no tamanho ... Isso é algo que eu gosto por vários motivos e também algo que, se implementado, resolveria seu problema.

Oito anos depois, eu não sei do que diabos eu estava falando aqui: há vários lugares onde você deseja girar por tamanho, porque as rotações diárias / semanais / mensais podem produzir arquivos MASSIVOS que podem causar sérios problemas. .

De uma perspectiva mais experiente, a verdadeira questão é por que você gostaria de se sentar e acompanhar continuamente um arquivo que está crescendo tão rápido que você está girando mais do que diariamente ... Seria como assistir ao stream Matrix por.

Hoje em dia, seria melhor analisar algumas agregações de log de dados grandes como Splunk ou Sumologic, onde é possível filtrar eventos de log em classes e disparar com base em valores de log específicos ... Não há necessidade de assistir a logs ativos. / p>     

por 10.11.2009 / 21:47
-1

Além disso, pode ser um pouco pesado demais para seus propósitos, mas o splunk tem um recurso final para fazer exatamente o que você deseja. É grátis até 500 MB / dia, mas se os dados estiverem além do tamanho, não valerá o custo.

    
por 13.08.2009 / 14:55