Como visualizar apenas conteúdo especial de um arquivo de log?

2

Existe uma maneira fácil de truncar um arquivo de log grande? Ou, em outras palavras: Como visualizar somente conteúdo especial de um arquivo de log. Por exemplo,

  • Como posso extrair as últimas 1000 linhas de um arquivo de log?
  • Como posso extrair apenas linhas com uma string especial?
  • Como posso extrair arquivos de log com uma data / hora especial?

Eu só conheço tail , mas este comando é restrito às últimas 10 linhas e é muito rápido. Pesquisar em um arquivo de log de 8 GB leva muito tempo ...

    
por testing 12.10.2011 / 19:09

4 respostas

3

How can I extract the last 1000 lines from a log file?

tail -1000 file.log

How can I extract only lines with a special string in it?

grep special_string file.log

How can I extract log files with a special date/time?

Eu não tenho certeza se entendi este, você pode elaborar mais? O que você precisa fazer exatamente?

    
por 12.10.2011 / 19:22
2

How can I extract only lines with a special string in it?

Eu só vou abordar este. Nos sistemas Solaris ou HP-UX, grep , egrep e fgrep existem como arquivos separados e cada um usa um algoritmo diferente. A maioria das distribuições Linux tem apenas o GNU grep e links simbólicos para cada um dos 3 nomes. Se você não tem que combinar um padrão com um metacaractere ('.', '*', '?', Etc), apenas combine uma string simples, então fgrep irá, sem dúvida, rodar mais rápido. Mesmo se fgrep correr mais rápido para você, 8 GB de log é uma quantidade enorme de texto para processar. Que tal dividi-lo em arquivos menores de meia gigola?

    
por 12.10.2011 / 21:51
0

Se você quiser fazer isso uma vez, use grep e tail .

Considere usar logrotate (de cron para lidar com arquivos de log enormes. Você pode configurá-lo para dividir os registros por tempo, tamanho, número de linhas etc. É muito útil e flexível.

    
por 12.10.2011 / 22:15
0

Considere também logwatch ou algo similar para filtrar as coisas importantes.

    
por 13.10.2011 / 03:48

Tags