私は約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>
いいえ、VirtualHostごとに2つのErrorLogディレクティブを設定することはできません。ただし、UNIXの「tee」コマンドを使用して2つ(またはそれ以上)のファイルにログを記録するために、コマンドにパイプするApacheの機能を使用できます。
ErrorLog "|/usr/bin/tee -a /var/log/Apache/error-1.log /var/log/Apache/error-2.log"
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"
私が遭遇した別の問題:
"|$ ...
は有効です。" |$ ...
ではありません。