Salve Mestres, Tenho alguns arquivos de log que tenho que analisar com frequência. Tenho um script em shell que me ajuda, porém queria algo um pouco mais inteligente, e de preferência em Perl.
Funciona assim, tenho no mesmo diretório vários arquivos de log, com formato similar. Eles são assim: [DD-MM-AAAA HH:MM:SS] <CODIGO> ?: <Informações de comprimento variável> ou ?[DD-MM-AAAA HH:MM:SS]: <Informações de comprimento variável> ou ?[DD-MM-AAAA HH:MM:SS.MMM]: <Informações de comprimento variável> Esse <?> é o tipo de evento, e o que me interessa normalmente é (E)rror e (W)arning. Então preciso passar um determinado arquivo como parâmetro para o script e o tipo de evento que quero (E ou W). O script precisa listar blocos desse arquivo. Os blocos começam 5 linhas antes do evento e vão até 5 linhas após o evento. Assim, se o evento E aparecer nas linhas 50 e 100, ele tem que listar as linhas 45 a 55 e 95 a 105. Bom, até ai acho que tá fácil ... eu acho ... rsrsrs ... ainda não consegui de uma maneira "elegante" ... kkkk Só que agora que a porca torce o rabo. Ele precisa pegar a data/hora que apareceu os eventos que estou procurando e procurar em todos os outros arquivos do diretório, com uma margem de 15 segundos a menos ou a mais. Assim, vamos suporte que ele tenha encontrado essas linha: [13-04-2013 21:17:15] f8j39h37 E:blablablablablablabla Ele teria que além de listar as linhas desse arquivo, verificar em todos os outros se houve qualquer registro entre 13/04/2013 21:17:00 e 13/04/2013 21:17:30 ... se sim, listar as linhas também. Ideias?? Dá pra fazer algo bem compacto e rápido no estilo regex?? Ah, não fui eu quem criou esse esquema de log maluco. Abs, Marcio
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
