summaryrefslogtreecommitdiff
path: root/lib/presque/worker/Role/Logger.pm
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-06-28 08:21:45 +0200
committerfranck cuny <franck@lumberjaph.net>2010-06-28 08:21:45 +0200
commitf938839f3f914da5822576091bec3511f0e7ae8c (patch)
treee00f008ef977d2146504f91bde0c3d9fb6a017b4 /lib/presque/worker/Role/Logger.pm
parentuse net::presque and add some delegation (diff)
downloadpresque-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.pm37
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;