NAME

HTTPD::WatchLog - watching Apache AccessLog simply 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->quote(1);
$log->ignore('localhost', '192.168.0.');
$log->ignore('/cgi-bin/');
$log->highlight('POST ');
$log->highlight(' 404 ', ' 500 ');

# regist triggers
my $worm = sub {
  my $line = shift;
  print STDERR "*** worm detected! \n" if $line =~ m|/root\.exe|;
};
$log->trigger( $worm );

# 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)

quote()

If true, meta characters in your regex patterns may be quoted
using built-in quotemeta() function,

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

means these lines are ..

$log->quote(0);
$log->ignore('192\.168\.0\.');

the same as below. you can set it when you don't want to put regex
into ignore or hilight list.

$log->quote(1);
$log->ignore('192.168.0.');

ignore()

Set pattern(s) as scalar or array. The module ignores lines
that cotains at least one of the pattern(s).

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

highlight()

Set pattern(s) 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