[SP-pm] Capturar trechos de um arquivo de log
Marcio Ferreira
marciodesouzaferreira at gmail.com
Sat Mar 12 21:16:21 PST 2011
Em 13 de março de 2011 01:13, "Flávio R. Lopes"
<flavio.lopes at links.inf.br>escreveu:
> Olá pessoal, tudo bem?
> Seguinte, tenho rodando uma aplicação que gera um arquivo de log no
> seguinte formato (e que seguem um padrão):
>
> 12-Mar 22:56 Id 100: Starting......
> 12-Mar 22:56 Id 100: blablablablablablablablablabla
> 12-Mar 22:56 Id 100: blablablablabla
> .
> .
> .
> Id: 100
> .
> .
> .
> Status: OK
> .
> .
> .
> 12-Mar 22:57 Id 100: blablablablablablabla
> 12-Mar 22:57 Id 100: blablablablablablablablablablablablabla
> 12-Mar 22:57 Id 100: End
>
> 13-Mar 22:10 Id 101: Starting......
> 13-Mar 22:10 Id 101: blablablablablablablablablabla
> 13-Mar 22:10 Id 101: blablablablablablablablablablablablabla
> .
> .
> .
> Id: 101
> .
> .
> .
> Status: ERROR
> .
> .
> .
> 13-Mar 22:11 Id 101: blablablablablablabla
> 13-Mar 22:11 Id 101: blablablablablablablablablablablablabla
> 13-Mar 22:11 Id 101: End
>
>
> Minha idéia é gravar num arquivo, os blocos (trechos) que tiveram album
> problema (FAIL, WARNING, ERROR) e posteriormente enviar no meu e-mail.
> Tomando o exemplo acima, nas linhas referentes a tarefa (ID=101) executada
> em 13/03, aconteceu algum problema (Status=ERROR). Então gostaria de copiar
> o bloco compreendido deste o início da linha onde é "startada" a tarefa
> (13-Mar 22:10 Id 101: Starting......) até a última linha desta tarefa
> (13-Mar 22:11 Id 101: End)
>
Hum, eu já passei por algo semelhante, eu a cheguei experimentar
o Text::Balanced[1],
mas não me foi muito eficiente, pq minhas "tags" eram um pouco complexas.
Eu resolvi com expressão regular porque meus *arquivos eram pequenos*
<code conceito>
my $tags = [
{begin => 'FAIL', end => 'END'},
{begin => 'WARNING', end => 'END'},
{begin => 'ERROR', end => 'END'},
];
my $log = do { local ( @ARGV, $/ ) = $file; <> };
foreach (@$tags) {
if ($log =~ m{ $tags->[$_]{begin} (.*?)$tags->[$_]{end}}sx){
// do something with $1
}
}
</code>
Se alguém tiver algo mais robusto e elegante, por favor "postaí".
[1] http://search.cpan.org/~adamk/Text-Balanced-2.02/lib/Text/Balanced.pm
>
> Tentei buscar algum módulo no CPAN, mas acredito que não estou fazendo a
> busca de forma apropriada.
> Alguém pode me dar uma sugestão?
>
> Abraço,
> Flávio
>
> =begin disclaimer
> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110313/0718c379/attachment.html>
More information about the SaoPaulo-pm
mailing list