У меня очень неприятная ситуация с журналами доступа / ошибок apache на удаленном сервере журналов.
Веб-сервер: Стандартный журнал 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");
};
Оба журнала работают нормально. Но ... журнал ошибок дважды вставляется в файл журнала. Когда я настраиваю веб-сервер для входа в локальный файл, ошибка появляется только один раз в этом файле. Какие-нибудь подсказки?
Вы дважды отправляете строки журнала из-за этих строк в rsyslogd.conf:
local7.info @log.remote.lan
local7.err @log.remote.lan
Когда вы указываете информацию, это означает, что информация и все высшие приоритеты будет отправлено, а не только информация. Поскольку приоритет у err выше, чем у info, вы можете удалить вторую строку, и журнал будет отправлен только один раз.