如何将Apache错误记录到每个虚拟主机的不同syslog工具?

时间:2013-09-05 13:38:58

标签: apache2 vhosts error-log rsyslog

在apache 2.2.22(Ubuntu 12.04)上运行了多个vhost,我想将每个vhost错误日志发送到单独的rsyslog文件, 以下是配置

Apache Vhost

<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>

Syslog config /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配置中提到的syslog的第一个条目。 我的意思是两个vhosts错误日志都将转到“local1。* /var/log/apache2/modsec/sdemoqa.log”

由于 infosec.pk

3 个答案:

答案 0 :(得分: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个声明。

答案 1 :(得分:0)

您可能需要使用以下内容修改自定义日志行:

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

答案 2 :(得分:-1)

我认为这里的要点是combined需要位于每个vhost中第一个日志行的末尾,或者它可能会将它与下一个vhost日志结合起来。正如汤姆所提到的那样倒挂,或者OP已经订购了它:

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

如果只有两个虚拟主机,至少在第一个虚拟主机中必须采用这种方式,如果还有更多需要在每个先前虚拟主机的FIRST日志行末尾以combined的方式进行排序否则,下一个vhost将始终合并到之前的vhost日志设置/位置。

免责声明:我还没有对此进行全面测试,在实施之前对此进行测试...