私は約 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>
答え1
いいえ、VirtualHost ごとに 2 つの ErrorLog ディレクティブを設定することはできません。ただし、UNIX の 'tee' コマンドを使用して 2 つ (またはそれ以上) のファイルにログを記録するために、Apache のコマンドへのパイプ機能を使用することはできます。
エラーログ "|/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"
答え2
デフォルトでは、パイプ ログ プロセスはシェルを呼び出さずに生成されます。シェルを使用して生成するには、"|" の代わりに "|$" を使用します (通常は /bin/sh -c を使用)。
これは Apache 2.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"
私が遭遇したもう一つの問題:
- 二重引用符とバーの間にスペースを入れないでください。
"|$ ...
有効です。" |$ ...
ではありません。