summary refs log tree commit diff
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;