web-dev-qa-db-ja.com

Apache httpd:エラーログをsyslogとローカルディスクに送信しますか? /etc/syslog.confに触れずに?

Apache httpd2.2サーバーがあります。リクエストが中央のsyslogサーバーに送信されるように、syslogを使用してすべてのメッセージをログに記録したいと思います。また、sysadminがローカルシステム上のログファイルに簡単にアクセスできるように、すべてのログメッセージがローカルディスクに送信されるようにしたいです。

HTTPアクセスログをローカルディスクとsyslogの両方に送信するのは簡単です。一般的な方法の1つは次のとおりです。

LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined
CustomLog "|/usr/bin/logger -t httpd -i -p local4.info" combined

ただし、エラーログに対してこれを行うのは簡単ではありません。エラーログは最後のErrorLogスタンザのみを使用するため、次の構成は機能しません。最初のErrorLogスタンザは無視されます。

ErrorLog logs/error_log
ErrorLog syslog:local4.error

Apacheエラーログがローカルディスクに書き込まれ、syslogに送信されるようにするにはどうすればよいですか?

/etc/syslog.confに触れずにこれを行うことは可能ですか?ユーザーが自分のApache構成ファイルを管理したい場合は問題ありませんが、/etc/syslog.confなどのシステムファイルに触れてほしくないのです。

2

すべてのErrorLogをパイプ(Perlスクリプトなど)に送信してみてください。このPerlスクリプトは、syslogとローカルディスクに送信できます。

2
Sirch

次を使用できます。

ErrorLog "| tee -a /var/log/httpd/error_log | /usr/bin/logger -t httpd -i -p local4.error"

あなたが求めていることをするために。

6
Satyajeet Singh