--- trunk/bin/irc-logger.pl 2008/02/29 22:11:07 83 +++ trunk/bin/irc-logger.pl 2008/03/06 18:03:05 84 @@ -22,6 +22,10 @@ Name of log file +=item --follow=file.log + +Follows new messages in file + =back =head1 DESCRIPTION @@ -46,11 +50,8 @@ $CHANNEL = '#irc-logger' if ($HOSTNAME =~ m/llin/); my $IRC_ALIAS = "log"; -my %FOLLOWS = - ( - ACCESS => "/var/log/apache/access.log", - ERROR => "/var/log/apache/error.log", - ); +# default log to follow and announce messages +my $follows_path = 'follows.log'; my $DSN = 'DBI:Pg:dbname=' . $NICK; @@ -96,6 +97,7 @@ my $log_path; GetOptions( 'import-dircproxy:s' => \$import_dircproxy, + 'follows:s' => \$follows_path, 'log:s' => \$log_path, ); @@ -109,6 +111,24 @@ print strftime($TIMESTAMP,localtime()), ' ', join(" ",@_), $/; } +# LOG following + +my %FOLLOWS = + ( +# ACCESS => "/var/log/apache/access.log", +# ERROR => "/var/log/apache/error.log", + ); + +sub add_follow_path { + my $path = shift; + my $name = $path; + $name =~ s/\..*$//; + warn "# using $path to announce messages from $name\n"; + $FOLLOWS{$name} = $path; +} + +add_follow_path( $follows_path ) if ( -e $follows_path ); + # HTML formatters my %escape = ('<'=>'<', '>'=>'>', '&'=>'&', '"'=>'"'); @@ -624,7 +644,7 @@ $_[KERNEL]->post($IRC_ALIAS => join => $CHANNEL); $_[KERNEL]->post($IRC_ALIAS => join => '#logger'); $_[KERNEL]->yield("heartbeat"); # start heartbeat -# $_[KERNEL]->yield("my_add", $_) for keys %FOLLOWS; + $_[KERNEL]->yield("my_add", $_) for keys %FOLLOWS; $_[KERNEL]->post( $IRC_ALIAS => privmsg => 'nickserv', "IDENTIFY $NICK" ); }, irc_public => sub { @@ -655,7 +675,7 @@ }, irc_ping => sub { - warn "pong ", $_[ARG0], $/; + _log( "pong ", $_[ARG0] ); $ping->{ $_[ARG0] }++; }, irc_invite => sub { @@ -861,10 +881,11 @@ Filename => $FOLLOWS{$trailing}, InputEvent => 'got_line', ); + warn "+++ following $trailing at $FOLLOWS{$trailing}\n"; }, got_line => sub { - $_[KERNEL]->post($session => my_tailed => - time, $trailing, $_[ARG0]); + warn "+++ $trailing : $_[ARG0]\n"; + $_[KERNEL]->post($session => my_tailed => time, $trailing, $_[ARG0]); }, }, );