1

複数の仮想ホストが 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>

syslog 構成 /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 の最初のエントリにリダイレクトされます。つまり、両方の仮想ホストのエラー ログが「local1.* /var/log/apache2/modsec/sdemoqa.log」に出力されます。

ありがとうinfosec.pk

4

3 に答える 3

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ことを前提として、両方の宣言をパイプしました。ErrorLogsyslog

于 2013-12-15T13:26:10.163 に答える
-1

combinedここでのポイントは、各 vhost の最初のログ行の最後にある必要があるか、次の vhost ログと結合される可能性があることだと思います。トムが言及したように、またはOPが注文したように逆に:

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

vhost が 2 つしかない場合は、少なくとも最初の vhost でこのようにする必要があります。それ以上のcombinedvhost がある場合は、前の各 vhost の FIRST ログ行の最後でこの方法で注文する必要があります。そうでない場合、次の vhost は常に get になります。以前の vhost ログ設定/場所に結合されます。

免責事項:私はこれを完全にテストしていません。実装する前にこれをテストしてください...

于 2013-11-08T18:01:20.347 に答える