NAME
    HTTPD::WatchLog - watching Apache AccessLog in realtime

SYNOPSIS
      use HTTPD::WatchLog;

      # ready..
      my $log = new HTTPD::WatchLog;

      $log->file('/usr/local/apache/logs/combined_log');
      $log->addr2host(1);    # convert ip address to hostname

      # set options
      $log->ignore('localhost', '192\.168\.0\.');
      $log->ignore('/cgi-bin/');
      $log->highlight('POST ');
      $log->highlight(' 404 ', ' 500 ');

      # regist triggers
      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 );

      # go!
      $log->watch;

DESCRIPTION
    HTTPD::WatchLog is designed for watching Apache webserver's AccessLog in
    realtime. This module provides unix command tail(1) like environment
    with more enhancement.

METHOD
    new()

            Construct a object. Some values (provided as accessors) can be set here.

            my $log = HTTPD::WatchLog->new(
                file => '/usr/local/apache/logs/access_log',
                addr2host => 1,
              );

    file()

            File path of what you want to watch. The default path is '/usr/local/apache/logs/access_log'.

            $log->file('/var/httpd/logs/combined_log');

    addr2host()

            Turn on ip address to hostnam DNS lookup switch. boolean value.

            $log->addr2host(1);    # on
            $log->addr2host(0);    # off (default)

    ignore()

            Set regex as scalar or array. The module ignores lines that cotains the regex(es).

            $log->ignore( 'localhost', '192\.168\.0\.' );
            $log->ignore( 'Mon' );    # i hate monday of course .. ;-)

    highlight()

            Set regex as scalar or array. highlight()ed term is highlightly showed if you use proper terminal.

            $log->highlight( 'HEAD ', 'POST ' );
            $log->highlight( 'root\.exe' );

    trigger()

            Regist trigger subroutines as scalar or array.

            my $sub = sub {  ...  };
            sub foo {  ...  };

            $log->trigger( $sub );
            $log->trigger( $sub, \&foo );

    watch()

            Now you can got it ! That's all.

            $log->watch;

DEPENDENCY
    File::Tail, Class::Accessor

AUTHOR
    Okamoto RYO <ryo@aquahill.net>

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

TODO
    Thinking now.. This module is experimental one, please tell me your
    ideas. :-)

