HTTPD-WatchLog-0.01 > HTTPD::WatchLog
名前¶
HTTPD::WatchLog - リアルタイムにApacheアクセスログを監視します
概要¶
use HTTPD::WatchLog;
# 準備..
my $log = new HTTPD::WatchLog;
$log->file('/usr/local/apache/logs/combined_log');
$log->addr2host(1); # IPアドレスをホスト名に変換
# オプションの設定
$log->ignore('localhost', '192\.168\.0\.');
$log->ignore('/cgi-bin/');
$log->highlight('POST ');
$log->highlight(' 404 ', ' 500 ');
# トリガの登録
my $sub = sub {
my $line = shift;
print STDERR "*** worm detected! \n" if $line =~ m|/root\.exe|;
};
sub foo {
exit(0) if shift =~ /Macintosh/;
}
$log->trigger( $sub, \&foo );
# そら行け!
$log->watch;
説明¶
HTTPD::WatchLogはリアルタイムにApachep Webサーバーのアクセスログを監視するよう 設計されています。このモジュールはunixコマンドtail(1)を拡張したような環境を 提供します。
メソッド¶
new()
オブジェクトの生成。(アクセッサとして提供される)いくつかの値を、ここで設定することができます。
my $log = HTTPD::WatchLog->new(
file => '/usr/local/apache/logs/access_log',
addr2host => 1,
);
file()
あなたが監視したいファイルのパス。デフォルトのパスは'/usr/local/apache/logs/access_log'です。
$log->file('/var/httpd/logs/combined_log');
addr2host()
IPアドレスからホスト名へのDNS検索スイッチをonにします。ブール値です。
$log->addr2host(1); # on
$log->addr2host(0); # off (デフォルト)
ignore()
スカラーもしくは配列で正規表現を設定してください。このモジュールは指定された正規表現を含む行を無視します。
$log->ignore( 'localhost', '192\.168\.0\.' );
$log->ignore( 'Mon' ); # もちろん月曜日なんて大嫌いさ .. ;-)
highlight()
スカラーもしくは配列で設定してください。適切な端末を使えば、highlight()された用語だけが明るく表示されます。
$log->highlight( 'HEAD ', 'POST ' );
$log->highlight( 'root\.exe' );
trigger()
スカラーまたは配列でトリガー・サブルーチンを登録します。
my $sub = sub { ... };
sub foo { ... };
$log->trigger( $sub );
$log->trigger( $sub, \&foo );
watch()
これで出きるようになりました!これだけです。
$log->watch;
依存性¶
File::Tail, Class::Accessor
作者¶
Okamoto RYO <ryo@aquahill.net>
参考資料¶
perl(1), tail(1), File::Tail, Socket, Class::Accessor
TODO¶
今、考え中...。このモジュールは実験的なものです。どうかアイデアをください。 :-)