我遇到了有关远程日志服务器上的 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,因此您可以删除第二行,这样日志只会发送一次。