web-dev-qa-db-ja.com

ApacheのVirtualHostごとに2つのエラーログを持つことは可能ですか?

私は約10のVirtualHostを持っており、error_logsを分離しておくのが好きです。最近、mod_securityスキャンのためにerror_logsをすべて組み合わせる必要があります。

テストVirtualDomainに対して2つのErrorLogを定義すると、エラーがログに記録されていないことがわかります。かなり奇妙です。

CustomLogにErrorLogの役割を果たすことは可能ですか?

または、2つのErrorLogを誤って定義していますか?

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.net
    ServerAlias www.mydomain.net mydomain.net
    DocumentRoot /var/www/html/mydomain
    ServerAdmin [email protected]
    UseCanonicalName Off

    ErrorLog logs/mydomain.net-error_log
    ErrorLog logs/unified_modsecurity-error_log

    CustomLog logs/mydomain.net-access_log combined
    UserDir disabled
    UserDir enabled mydomainuser
</VirtualHost>
4
Pat

いいえ、VirtualHostごとに2つのErrorLogディレクティブを設定することはできません。ただし、UNIXの「tee」コマンドを使用して2つ(またはそれ以上)のファイルにログを記録するために、コマンドにパイプするApacheの機能を使用できます。

ErrorLog "|/usr/bin/tee -a /var/log/Apache/error-1.log /var/log/Apache/error-2.log"

6
diz

Apache 2.4 Logsドキュメント によると:

デフォルトでは、パイプログプロセスはシェルを呼び出さずに生成されます。 「|」の代わりに「| $」を使用してくださいシェルを使用してスポーンするには(通常は/ bin/sh -cを使用):

これはApache2.2のデフォルトの動作でした。

例:

# Write to files error-1.log and error-2.log, and echo to stdout
CustomLog "|$/usr/bin/tee -a /var/log/Apache/error-1.log /var/log/Apache/error-2.log"

私が遭遇した別の問題:

  • Double-QuoteとBarの間にスペースを入れないでください。
    • "|$ ...は有効です。
    • " |$ ... ではありません。
2
Aubrey Lavigne