X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FLogRouter.pm;fp=lib%2FDBIx%2FClass%2FDeploymentHandler%2FLogRouter.pm;h=b58c9b8f491711b7e7e11b54136ad8afe3aee92e;hb=374a05c8dd5c974fe841569aa34eeabd7b072dd6;hp=0000000000000000000000000000000000000000;hpb=823a39c30ce9192a438dfba68b5ef78265869ca9;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler/LogRouter.pm b/lib/DBIx/Class/DeploymentHandler/LogRouter.pm new file mode 100644 index 0000000..b58c9b8 --- /dev/null +++ b/lib/DBIx/Class/DeploymentHandler/LogRouter.pm @@ -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;