# # Copyright 2007-2010 David Snopek # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # package POE::Component::MessageQueue::Logger; use Moose; use POE::Kernel; my $LEVELS = { debug => 0, info => 1, notice => 2, warning => 3, error => 4, critical => 5, alert => 6, emergency => 7 }; has 'level' => ( is => 'rw', default => 3, ); has 'logger_alias' => ( is => 'rw', writer => 'set_logger_alias', predicate => 'has_logger_alias', ); has 'log_function' => ( is => 'rw', writer => 'set_log_function', predicate => 'has_log_function', ); sub log { my ($self, $type, $msg) = @_; if ( not defined $msg ) { $msg = $type; $type = 'info'; } if ( $self->has_log_function ) { $self->log_function->( $type, $msg ); } elsif ( $self->has_logger_alias ) { $poe_kernel->post($self->logger_alias, $type, "$msg\n" ); } elsif ($LEVELS->{$type} >= $self->level ) { print STDERR "$msg\n"; } } sub shutdown { my $self = shift; if ($self->has_logger_alias) { $poe_kernel->signal( $self->logger_alias, 'TERM' ); } } 1;