summaryrefslogtreecommitdiff
path: root/lib/presque/worker/Role/Logger.pm
diff options
context:
space:
mode:
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;