diff options
author | franck cuny <franck@lumberjaph.net> | 2010-06-28 08:21:45 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-06-28 08:21:45 +0200 |
commit | f938839f3f914da5822576091bec3511f0e7ae8c (patch) | |
tree | e00f008ef977d2146504f91bde0c3d9fb6a017b4 /lib/presque/worker/Role/Logger.pm | |
parent | use net::presque and add some delegation (diff) | |
download | presque-worker-f938839f3f914da5822576091bec3511f0e7ae8c.tar.gz |
logger read from context; more net::presque
Diffstat (limited to 'lib/presque/worker/Role/Logger.pm')
-rw-r--r-- | lib/presque/worker/Role/Logger.pm | 37 |
1 files changed, 28 insertions, 9 deletions
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; |