Syslog-ng 重复日志行

Syslog-ng 重复日志行

我遇到了有关远程日志服务器上的 apache 访问/错误日志的非常烦人的情况。

Web 服务器:使用以下方式进行 Apache 日志记录:

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

rsyslog配置如下:

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

到目前为止一切顺利。所有日志都最终到达远程日志服务器。在该服务器上,我已将 syslog-ng 配置如下:

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");
};

两个日志都运行正常。但是...错误日志在日志文件中插入了两次。当我将 Web 服务器设置为记录到本地文件时,错误仅在该文件中出现一次。有什么线索吗?

答案1

您发送了两次日志行,因为 rsyslogd.conf 中有以下几行:

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

当您指定信息时,这意味着信息以及所有更高优先级将被发送,而不仅仅是 info。由于 err 的优先级高于 info,因此您可以删除第二行,这样日志只会发送一次。

相关内容