b58c9b8f491711b7e7e11b54136ad8afe3aee92e
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / LogRouter.pm
1 package DBIx::Class::DeploymentHandler::LogRouter;
2 use Moo;
3 use DBIx::Class::DeploymentHandler::Logger;
4
5 with 'Log::Contextual::Role::Router';
6
7 has _logger => (
8    is      => 'lazy',
9    builder => sub { DBIx::Class::DeploymentHandler::Logger->new },
10 );
11
12 sub handle_log_request {
13    my ($self, %message_info) = @_;
14
15    my $log_code_block = $message_info{message_sub};
16    my $args           = $message_info{message_args};
17    my $log_level_name = $message_info{message_level};
18    my $logger         = $self->_logger;
19    my $is_active      = $logger->can("is_${log_level_name}");
20
21    return unless defined $is_active && $logger->$is_active;
22
23    my $log_message = $log_code_block->(@$args);
24
25    $self->_logger->$log_level_name($log_message);
26 }
27
28 sub before_import {}
29 sub after_import {}
30
31 1;