[SP-pm] Monitorar Arquivo de Log

Nilton OS jniltinho at gmail.com
Sun Jun 16 18:53:50 PDT 2013


Dica,

Se for log do Linux (via syslog)
Joga no pipe e faz a leitura.

http://mysfitt.net/tutorials/splunk_fifo.php
http://www.softpanorama.info/Logs/Syslog/pipes_in_syslog.shtml


Com Perl faz assim, depois coloca no Cron a cada 5 minutos
Uso isso no Serviço de E-mail
============================================================================================
*#!/usr/bin/perl
use strict;
use IO::File;

sub readLog {
my $pat = '^(... .. ..:..:..) (\S+) \S+ ([a-zA-Z0-9]+): FILTER_LOGX:
from=\<(.*?)\> to=\<(.*?)\> subject=\<(.*?)\> size=([0-9]+) hostip=([^ ]*)
nrcpt=([0-9]+)';
    my $fh;
    if (not sysopen($fh, "/var/log/smtp.pipe", O_RDONLY)) {
        print $nl . " ... erro ao abrir PIPE \n";
        $nl = "";
        return '';
    }
    print $nl . " ... leitura de log iniciada \n";
    $nl = "";

    while (<$fh>) {
      chomp;
      if (m{$pat}) {
           $hora = $1;
           $server_name = $2;
           $msgid = $3;
           $from = lc $4;
           $to = lc $5;
           $subject = $6;
           $size = $7;
           $hostip = $8;
           $nrcpt = $9;
         print "$hora $server_name $msgid $from $to $subject $size $hostip
$nrcpt\n";
      }
    }

    close $fh;
}*

============================================================================================



Em 16 de junho de 2013 22:40, Marcio - Google <marciorp em gmail.com> escreveu:

> 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
>
>


-- 
..............................................................................
*Com Deus todas as coisas são possíveis* :::
LinuxPro<http://www.linuxpro.com.br>

*"A qualidade nunca se obtém por acaso; ela é sempre o resultado do esforço
inteligente." (John Ruskin)
"A mente que se abre a uma nova ideia jamais volta ao seu tamanho original"
(Albert Einstein)*
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130616/2b94c219/attachment.html>


More information about the SaoPaulo-pm mailing list