[SP-pm] Monitorar Arquivo de Log

Eduardo Verissimo everissimo at gmail.com
Mon Jun 17 03:50:18 PDT 2013


Como o Gabriel sugeriu, File::Tail resolve teu problema numa boa. Eu tenho
um script aqui que lê um log e mostra o que preciso, e ainda mostra os
resultados coloridos.

#!/usr/bin/perl

use strict;
use warnings;

$| = 1;
use Term::ANSIColor;
use File::Tail;

my $file = File::Tail->new(name => shift(@ARGV), maxinterval => 5);
while (my $line = $file->read)
{
    chomp $line;
    my @p = split /,/, $line;
    my $time = $p[0];
    my $referer = $p[6] or undef;

    if ($referer)
    {
#        print "Verificando: $referer\n";
        my ($dummy, $q) = $referer =~ m/(&|\?)q=(.*?)(&|$)/;
        next unless $q;

        $q =~ s/\+/ /g;
        $q =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;

        print "$time ";
        print color ($referer =~ /sitesearch/ ? 'yellow' : 'green');
        print "$q";
        print color 'reset';
        print "\n";
    }
}
~



Em 16 de junho de 2013 22:55, Gabriel Vieira <gabriel.vieira em gmail.com>escreveu:

> https://metacpan.org/module/MGRABNAR/File-Tail-0.99.3/Tail.pm
>
> 2013/6/16 Marcio - Google <marciorp em gmail.com>:
> > Salve Mestres!
> >
> > Estou tentando fazer uma coisa que deve ser trivial, mas estou patinando.
> >
> > Quero monitorar um arquivo de log e procurar uma determinada cadeia de
> > caracteres apenas nas linhas que foram adicionadas após a última
> varredura.
> >
> > Hoje eu fico dentro de um loop abrindo e fechando o arquivo. A cada vez
> que
> > abro procuro a cadeia e se encontro mostro no terminal.
> >
> > Não estou satisfeito com a solução. Queria que o script "percebesse" toda
> > vez que fosse adicionado linha no final do arquivo e procurasse a cadeia
> > somente nas linhas que foram adicionadas.
> >
> > O que quero é +- o que o "tail -F arquivo.log" faz.
> >
> > Quando acho a cadeia em uma determinada linha, preciso imprimir cinco
> > linhas, sendo duas antes da linha que encontrei, a linha que encontrei e
> > duas linhas após.
> >
> > Qual a forma mais eficiente de fazer isso?
> >
> > [...]'s
> >
> > Marcio
> >
> > ========================================
> > ########### Campanha Ajude o Marcio! ###########
> > http://sosmarcio.blogspot.com.br/
> > http://www.vakinha.com.br/VaquinhaP.aspx?e=195793
> > ========================================
> >
> > =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
> >
>
>
>
> --
> Gabriel Vieira
> =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/20130617/26dd34a4/attachment.html>


More information about the SaoPaulo-pm mailing list