Как регистрировать ошибки Apache в разных средствах системного журнала для каждого виртуального хоста?

На apache 2.2.22 (Ubuntu 12.04) работает несколько виртуальных хостов, я хочу отправлять журналы ошибок каждого виртуального хоста в отдельный файл rsyslog. Ниже приведены настройки.

Апач виртуальный хост

<VirtualHost *:80>
  php_value auto_prepend_file sdemoqa.php
  DocumentRoot /home/www//demoqa
  ServerName sdemoqa.xyz.com
  ErrorLog "syslog:local1"
  CustomLog /var/log/apache/sdemoqa-access.log combined

  RewriteEngine on
  Include /nas/wow.conf
  Include /nas/auth.conf
</VirtualHost>


<VirtualHost *:80>
  DocumentRoot /home/www/demoqa/hearing
  ServerName shdemoqa.xyz.com
#  ErrorLog /var/log/apache/hdemoqa-error.log
  ErrorLog "syslog:local2"
  CustomLog /var/log/apache/shdemoqa-access.log combined
</VirtualHost>

Конфигурация системного журнала /etc/rsyslog.d/50-default.conf

#Mod Security Logs
local1.*                        /var/log/apache2/modsec/sdemoqa.log
local2.*                        /var/log/apache2/modsec/shdemoqa.log

Но все ошибки vhosts перенаправляются на первую запись системного журнала, упомянутую в конфигурациях apache. Я имею в виду, что оба журнала ошибок vhosts собираются в "local1.* /var/log/apache2/modsec/sdemoqa.log"

Спасибо infosec.pk


person Mudasar    schedule 05.09.2013    source источник


Ответы (3)


Местоположение syslog для директив ведения журнала доступно только для директивы ErrorLog, а средство ведения журнала является глобальным. Какой бы ни был определен последним, это объект, который будет использоваться для всех syslog местоположений регистрации.

Как было предложено, бревенчатый трубопровод - лучший способ добиться того, что вы описали, - это то, что уже упоминалось с логарифмическим трубопроводом. Это печально, потому что вы теряете способность различать приоритеты.

Кроме того, другие ответы предполагают, что регистратор находится в /bin/logger в моей установке Ubuntu 12.04, на самом деле он находится в /usr/bin/logger

<VirtualHost *:80>
  php_value auto_prepend_file sdemoqa.php
  DocumentRoot /home/www//demoqa
  ServerName sdemoqa.xyz.com
  CustomLog "|/usr/bin/logger -p local1.notice -t apache" common
  CustomLog /var/log/apache/sdemoqa-access.log combined

  RewriteEngine on
  Include /nas/wow.conf
  Include /nas/auth.conf
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /home/www/demoqa/hearing
  ServerName shdemoqa.xyz.com
  CustomLog "|/usr/bin/logger -p local2.notice -t apache" common
  CustomLog /var/log/apache/shdemoqa-access.log combined
</VirtualHost>

Я передал оба объявления VirtualHost, предполагая, что вы хотите, чтобы директива ErrorLog по умолчанию также перешла к syslog в еще одном месте.

person Steve Buzonas    schedule 15.12.2013

Возможно, вам потребуется изменить строку customlog примерно следующим образом:

CustomLog "|/bin/logger -p local1.info -t apache" combined
ErrorLog syslog:local1
person Tom Damon    schedule 05.09.2013
comment
Разве это не лишнее? Оператор ErrorLog syslog:local1 будет отправлен в локальную систему системного журнала. И насколько я помню; CustomLog разве это не определение специального шаблона ведения журнала? - person renoirb; 19.09.2013

Я думаю, что дело здесь в том, что combined должен быть в конце первой строки журнала в каждом виртуальном хосте, иначе он, возможно, будет объединен со следующими журналами виртуального хоста. Итак, как упомянул Том, или перевернутое, как приказал ОП:

ErrorLog syslog:local1 combined
CustomLog "|/bin/logger -p local1.info -t apache"

Это должно быть так, по крайней мере, в первом виртуальном хосте, если есть только два виртуального хоста, если их больше, его необходимо упорядочить таким образом с combined в конце ПЕРВОЙ строки журнала в каждом предыдущем виртуальном хосте, иначе следующий виртуальный хост будет всегда объединиться с предыдущими настройками/местоположением журнала vhost.

Отказ от ответственности: я не тестировал это полностью, проверьте это перед реализацией...

person r0N1n    schedule 08.11.2013
comment
В документации Apache не упоминается поддержка использования combined с ErrorLog - person IanB; 08.10.2018