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

Tiago Peczenyj tiago.peczenyj at gmail.com
Sun Mar 13 18:59:48 PDT 2011


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. Quando vc define os estados e como vc transita de
um para o outro (que pode ser algo muito simples como uma flag booleana).

Outro exemplo, as vezes vc precisa fazer algo como formatar arquivos, ex.

de

<a>
<b>
<c>valor</c>
</b>
</a>

para

<a>
   <b>
        <c>valor</c>
   </b>
</a>

(espero que fique bem formatado)

A forma como vc faz isso é criando uma maquina de estados. Imagine que a
cada <TAG> vc incrementa uma variável $nivel e, a partir dela, sabemos como
adicionar uma quantidade de espaços na frente das tags. Este é um exemplo
bem simples de maquina de estados tambem.


2011/3/13 "Flávio R. Lopes" <flavio.lopes at links.inf.br>:
> Máquina de Estados?....desculpem minha ignorância, mas nunca ouvi falar
> sobre isto. Vou pesquisar sobre...
> Por enquanto, como é meio urgente isto, vou dar uma olhada no que sugeriu
o
> Nelson.
>
> abraço,
> Flávio
>
> Em 13-03-2011 17:09, Thiago escreveu:
>>
>> Não sei o tamanho do arquivo, mas uma máquina de estados, como sugeriu o
>> Blabos soa bem...
>>
>> On 13-03-2011 01:13, "Flávio R. Lopes" wrote:
>>>
>>> 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)
>>>
>>> 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
>>
>> =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
>>
>
> =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
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110313/8cf285bb/attachment.html>


More information about the SaoPaulo-pm mailing list