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
などのシステムファイルに触れてほしくないのです。
すべてのErrorLogをパイプ(Perlスクリプトなど)に送信してみてください。このPerlスクリプトは、syslogとローカルディスクに送信できます。
次を使用できます。
ErrorLog "| tee -a /var/log/httpd/error_log | /usr/bin/logger -t httpd -i -p local4.error"
あなたが求めていることをするために。