Отправить Apache Access Logs в системный журнал
У нас есть IBM HTTP Server (на основе Apache 2.0), и мы хотим отправить журналы доступа в syslog. (в дополнение к журналам ошибок, которые работают)
Конфигурация, которую мы используем, выглядит следующим образом:
ErrorLog "|/HTTPServer/bin/rotatelogs /archive/http/error_log.%Y%m%d 86400 | /usr/bin/logger -t httpd -plocal6.err"
LogLevel warn
LogFormat "%h %{True-Client-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%{Host}i\" %v" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog "|exec /usr/bin/logger -t ptseelm-ax3004 -i -p local6.notice" combined
Но записи логов даже не появляются в локальном syslog.out
вот как выглядят процессы:
ps -ef | grep httpd
apache 6226000 8388618 0 09:04:01 - 0:00 /HTTPServer/bin/httpd -d /HTTPServer -k start
apache 6750220 8388618 0 09:04:01 - 0:00 /HTTPServer/bin/httpd -d /HTTPServer -k start
apache 7602390 8388618 0 09:04:01 - 0:00 /HTTPServer/bin/httpd -d /HTTPServer -k start
root 8388618 1 0 09:04:01 - 0:00 /HTTPServer/bin/httpd -d /HTTPServer -k start
root 9044038 8388618 0 09:04:01 - 0:00 /usr/bin/logger -t httpd -plocal6.err
Таким образом, к дочерним процессам не подключен регистратор... в этом ли проблема? Кто-нибудь может мне помочь?:)
У нас есть следующее в syslog.conf:
local6.* @somerealipaddress
1 ответ
Я бы посоветовал вместо того, чтобы отправлять напрямую в логгер, лучше записать в файл, а затем с помощью отдельного процесса прочитать этот файл и отправить его в системный журнал.
Многие программы syslog, например, rsyslog и syslog-ng, могут читать как из файла, так и из /dev/log. Другой вариант - просто использовать tail -F и pipe для logger.