package POE::Component::Server::Twirc::LogAppender;
$POE::Component::Server::Twirc::LogAppender::VERSION = '0.20';
use warnings;
use strict;
use base qw/Log::Log4perl::Appender/;
sub new {
my($class, @options) = @_;
my $self = {
name => 'twirc-logger',
irc_channel => '&twirc-log',
history => [],
history_size => 50,
@options,
};
for ( qw/ircd irc_botname irc_channel/ ) {
die "$_ required" unless defined $self->{$_};
}
bless $self, $class;
}
sub log {
my($self, %params) = @_;
$self->{ircd}->yield(daemon_cmd_privmsg =>
$self->{irc_botname}, $self->{irc_channel}, $params{message});
push @{$self->{history}}, \%params;
shift @{$self->{history}} while @{$self->{history}} > $self->{history_size};
}
sub dump_history {
my $self = shift;
$self->{ircd}->yield(daemon_cmd_privmsg =>
$self->{irc_botname}, $self->{irc_channel}, $_->{message})
for @{$self->{history}};
}
1;