From f938839f3f914da5822576091bec3511f0e7ae8c Mon Sep 17 00:00:00 2001 From: franck cuny Date: Mon, 28 Jun 2010 08:21:45 +0200 Subject: logger read from context; more net::presque --- lib/presque/worker/Role/Logger.pm | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'lib/presque/worker/Role/Logger.pm') diff --git a/lib/presque/worker/Role/Logger.pm b/lib/presque/worker/Role/Logger.pm index 4285b55..c33ae51 100644 --- a/lib/presque/worker/Role/Logger.pm +++ b/lib/presque/worker/Role/Logger.pm @@ -9,18 +9,37 @@ has logger => ( isa => 'Object', lazy => 1, default => sub { - my $self = shift; - my $log = Log::Dispatch->new(); - $log->add( - Log::Dispatch::Screen->new( - name => 'screen', - min_level => 'debug', - newline => 1, - ) - ); + my $self = shift; + my $context = $self->context; + my $logger = Log::Dispatch->new(); + if (my $log_conf = $context->{logger}) { + foreach my $log_type (keys %{$log_conf}) { + my $log_engine = $self->_load_log_engine($log_type); + my $_logger = + $log_engine->new(%{$self->context->{log}->{$log_type}}); + $logger->add($_logger); + } + } + else { + $log->add( + Log::Dispatch::Screen->new( + name => 'screen', + min_level => 'debug', + newline => 1, + ) + ); + } + $log; } ); +sub _load_log_engine { + my ($self, $engine) = @_; + my $log_engine = "Log::Dispatch::" . ucfirst($engine); + Class::MOP::load_class($log_engine); + $log_engine; +} + before start => sub { my $self = shift; -- cgit v1.2.3