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 <[email protected]>

参考資料

perl(1), tail(1), File::Tail, Socket, Class::Accessor

TODO

今、考え中...。このモジュールは実験的なものです。どうかアイデアをください。 :-)