2011-10-24 8 views
1

私は、何かがApacheのエラーログに書き出されるたびに、いくつかの余分なタスクを実行するApacheモジュールを作成しようとしています。どのようなフックを扱う必要がありますか?モジュールでApacheエラーを処理するにはどうすればよいですか?

更新私がやろうとしています何の少しより多くの情報:私はさまざまな環境やフレームワークでは、複数のサーバーからのエラーメッセージを集約する独自のロギング・コンポーネントを持っている - のLinux、PHP、Windowsの03/08、 .NET 2/4など... .NETコンポーネントが完成しました。私はApacheモジュールがLAMP側に行くためのルートだと考えています。 Apacheはエラーを聞くたびに、すでに作成したWebサービスにそのWebサービスを転送します。

あなただけ pipe the errorlog to a programでき

答えて

4

ErrorLog "|/path/to/yourscript.pl >>/var/log/apache2/error.log" 

yourscript.plは小さなPerlプログラムである可能性があります。重要なのは、私がKonerakの答えをお勧めします、物事をシンプルに保つための

#!/usr/local/bin/perl 

$|=1; # Don't buffer 
print while <STDIN>; 
3

(Apacheは起動時に、プログラムは一度だけ呼び出されますので、1行を解析し、終了していない)、それはSTDINが終了するまで実行し続けるということです。

あなたが本当にモジュールのルートを移動し、ソースコードを詳細に調べると、独自のロガーハンドラモジュールを書きたい場合は、Apacheのソースコードは、ap_hook_log_transactionレジスタ機能を有し、libaprを使用しています。これは、ソースコード内のいくつかの場所で使われています:

[email protected] ~/httpd-2.2.21 $ grep -Rl ap_hook_log . 
./modules/filters/mod_reqtimeout.c 
./modules/test/mod_optional_fn_import.c 
./modules/test/mod_optional_hook_export.c 
./modules/loggers/mod_logio.c 
./modules/loggers/mod_log_forensic.c 
./modules/loggers/mod_log_config.c 
./modules/experimental/mod_example.c 
./docs/manual/developer/modules.html.ja.utf8 
./docs/manual/developer/modules.html.en 

は、あなたが独自のモジュールを作成すると仮定すると、それをコンパイルし、Apacheの設定にロードし、それはあなたが何かを、ロギングイベントを傍受することができます私の理解でありますそれを次のフックに渡すか、そこでそれを止めてください。

これが役に立ちます。

+0

私はKonerakの答えを誤解している可能性があり、あなたのコメント後にそれを再度読まなければならなかったと思います。私はあなたの答えに基づいて有望に見える多くの情報を見つけることができました。 – Jeff

関連する問題