Syslog-ng duplicam linhas de log

1

Eu tenho uma situação muito chata com relação aos logs de acesso / erro do apache em um servidor de log remoto.

servidor da Web: Registro de apache em estoque com:

ErrorLog "|/usr/bin/logger -p local7.err -t www.sitename.com"
CustomLog "|/usr/bin/logger -p local7.info -t www.sitename.com" "combined"

O rsyslog é configurado da seguinte maneira:

local7.info @log.remote.lan
local7.err @log.remote.lan

Até aí tudo bem. Todos os logs acabam no servidor de log remoto. Nesse servidor eu tenho o syslog-ng configurado da seguinte forma:

options {
        long_hostnames(off);
        flush_lines(0);
        use_dns(no);
        use_fqdn(no);
        owner("root");
        group("adm");
        perm(0644);
        dir_perm(0755);
        stats_freq(0);
        bad_hostname("^gconfd$");
        create_dirs(yes);
        keep_hostname (yes);
};
destination hosts_acc {
        file("/var/log/remote/${newmsghdr}/$R_YEAR/$R_MONTH/$R_DAY/access.log");
};
destination hosts_err {
        file("/var/log/remote/${newmsghdr}/$R_YEAR/$R_MONTH/$R_DAY/error.log");
};
filter f_access {
        message("GET|POST|OPTIONS|HEAD");
};
filter f_error {
        message('\[error\]');
};
log {  
        source(s_lan);
        rewrite(r_msghdr);
        filter(f_access);
        destination(hosts_acc);
        flags("final");};
log {  
        source(s_lan);
        rewrite(r_msghdr);
        filter(f_error);
        destination(hosts_err);
        flags("final");
};

Ambos os registros funcionam bem. Mas ... o log de erros é inserido duas vezes no arquivo de log. Quando defino o servidor da Web para efetuar login em um arquivo local, o erro aparece apenas uma vez nesse arquivo. Alguma pista?

    
por Johan Kooijman 19.07.2012 / 15:41

1 resposta

3

Você está enviando as linhas de log duas vezes, por causa dessas linhas no rsyslogd.conf:

local7.info @log.remote.lan
local7.err @log.remote.lan

Quando você especifica info, isso significa que as informações e todas as prioridades mais altas serão enviadas, não apenas informações. Como o err tem uma prioridade mais alta que a informação, você pode remover a segunda linha, então o registro será enviado apenas uma vez.

    
por 19.07.2012 / 15:49