[SP-pm] Capturar trechos de um arquivo de log

"Flávio R. Lopes" flavio.lopes at links.inf.br
Wed Mar 16 10:25:24 PDT 2011


Em 16-03-2011 12:04, Eliane Franco escreveu:
> Colega,
>
> Este texto não segue um padrão de numero de linhas no log?
> O ID pelo que entendi não repete, certo?
Sim, minha idéia inicial era localizar no arquivo de Log pela linha onde 
existe algum tipo de erro e a partir dela (algumas linhas acima) 
identificar o Id do Job e a partir daí selecionar todas as linhas do 
Log, ou seja, por um início e pelo fim.
>
> Meu olhar é simples, não de mestre. Então, penso que deveria 
> identificar o ID no texto. E fazer as contas da posicao inicial e 
> final, ja que saberia o numero de linhas...
> Isso funcionaria, mas não é legal, pq obriga manter um padrão do 
> log... o correto é ter um inicio e fim identificado mesmo. Estou só 
> aprendendo tbem.
Este é o problema, pois nem sempre segue um padrão (de ter sempre o 
mesmo número de linhas).
>
> Abraços,
> Eliane
Mas valeu pelo reply.
Abraço!
>
>
>
>
>
> Em 14 de março de 2011 20:54, "Flávio R. Lopes" 
> <flavio.lopes em links.inf.br <mailto:flavio.lopes em links.inf.br>> escreveu:
>
>     Ok, obrigado Gabriel.
>     Estou "juntando" as idéias aqui com base na sugestão do pessoal.
>
>     Abraço,
>     Flávio
>
>     Em 14-03-2011 09:55, Gabriel Andrade de Santana escreveu:
>
>         2011/3/13 Tiago Peczenyj<tiago.peczenyj em gmail.com
>         <mailto:tiago.peczenyj em gmail.com>>:
>
>             Flavio
>
>             Imagine que vc quer imprimir todas as linhas entre uma
>             string X e outra Y.
>             Pode ser o começo e o fim de um StackTrace Java por
>             exemplo. Vc pode ter uma
>             "flag" $imprime quando encontra X e desliga quando encontra Y.
>             É uma maquina de estados pois vc tem 2 estados definidos:
>             "dentro" e "fora"
>             do que vc quer imprimir.
>
>         Esse tipo de comportamento, onde uma flag determina se estamos
>         dentro
>         ou fora de um intervalo, pode ser emulado utilizando o operador de
>         intervalo (..) quem em contexto escalar[1][2] age como um
>         flip-flop[3]
>         armazenando o estado booleano resultante das próximas avaliações.
>
>         Em if($linha =~ /foo/ .. $linha =~ /bar/) {} o resultado da
>         operação
>         será sempre verdadeiro a partir do momento em que $linha contiver
>         "foo" e assim permanecerá através das sucessivas chamadas até que
>         $linha contenha "bar" e então retornará falso NA PRÓXIMA
>         execução do
>         teste no bloco if.
>
>         A solução do Nelson poderia ser (porcamente) reescrita assim:
>
>         ====
>         use strict;
>         use warnings;
>
>         my @buffer;
>         my $has_error;
>
>         while (<>) {
>           if ( /Starting/ .. /End/ ) { # ainda estamos entre
>         "Starting" e "End"?
>             $has_error = 1 if !$has_error&&  m/FAIL|WARNING|ERROR/;
>             push @buffer, $_;
>           }
>           else {
>             send_email( \@buffer ), $has_error = 0 if $has_error;
>             @buffer = ();
>           }
>         }
>
>         ====
>         $ perl script.pl <http://script.pl> arquivo.log
>
>         Aviso: esse código tem o intuito de somente demonstrar de forma
>         simplista o uso do operador supracitado e não figura como um
>         todo um
>         exemplo de boas práticas nem como solução definitiva para o
>         problema.
>         Cabendo, portanto, ao bom entendedor transformar em algo útil as
>         minhas meias-palavras. :)
>
>
>         [1] http://perldoc.perl.org/perlop.html#Range-Operators
>         [2] http://tinyurl.com/ybfanvv
>         [3] http://pt.wikipedia.org/wiki/Flip-flop
>         =begin disclaimer
>            Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>          SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>         <mailto:SaoPaulo-pm em pm.org>
>          L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>         =end disclaimer
>
>
>
>     =begin disclaimer
>      Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>     SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>     <mailto:SaoPaulo-pm em pm.org>
>     L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>     =end disclaimer
>
>
>
> =begin disclaimer
>     Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>   SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>   L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>    

-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110316/4c602660/attachment.html>


More information about the SaoPaulo-pm mailing list