Modernize LC usage
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / LogRouter.pm
diff --git a/lib/DBIx/Class/DeploymentHandler/LogRouter.pm b/lib/DBIx/Class/DeploymentHandler/LogRouter.pm
new file mode 100644 (file)
index 0000000..b58c9b8
--- /dev/null
@@ -0,0 +1,31 @@
+package DBIx::Class::DeploymentHandler::LogRouter;
+use Moo;
+use DBIx::Class::DeploymentHandler::Logger;
+
+with 'Log::Contextual::Role::Router';
+
+has _logger => (
+   is      => 'lazy',
+   builder => sub { DBIx::Class::DeploymentHandler::Logger->new },
+);
+
+sub handle_log_request {
+   my ($self, %message_info) = @_;
+
+   my $log_code_block = $message_info{message_sub};
+   my $args           = $message_info{message_args};
+   my $log_level_name = $message_info{message_level};
+   my $logger         = $self->_logger;
+   my $is_active      = $logger->can("is_${log_level_name}");
+
+   return unless defined $is_active && $logger->$is_active;
+
+   my $log_message = $log_code_block->(@$args);
+
+   $self->_logger->$log_level_name($log_message);
+}
+
+sub before_import {}
+sub after_import {}
+
+1;