The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

# Copyrights 2007-2024 by [Mark Overmeer <markov@cpan.org>].
# For other contributors see ChangeLog.
# See the manual pages for details on the licensing terms.
# Pod stripped from pm file by OODoc 2.03.
# This code is part of distribution Log-Report. Meta-POD processed with
# OODoc into POD and HTML manual-pages. See README.md
# Copyright Mark Overmeer. Licensed under the same terms as Perl itself.
use vars '$VERSION';
$VERSION = '1.39';
# ABSTRACT: Dancer2 logger engine for Log::Report
use strict;
use Moo;
use Scalar::Util qw/blessed/;
use Log::Report 'log-report', syntax => 'REPORT';
our $AUTHORITY = 'cpan:MARKOV';
my %level_dancer2lr =
( core => 'TRACE'
, debug => 'TRACE'
);
# Set by calling function
has dispatchers =>
( is => 'ro'
, isa => Maybe[HashRef]
);
sub BUILD
{ my $self = shift;
my $configs = $self->dispatchers || {default => undef};
$self->{use} = [ keys %$configs ];
dispatcher 'do-not-reopen';
foreach my $name (keys %$configs)
{ my $config = $configs->{$name} || {};
if(keys %$config)
{ my $type = delete $config->{type}
or die "dispatcher configuration $name without type";
dispatcher $type, $name, %$config;
}
}
}
around 'error' => sub {
my ($orig, $self) = (shift, shift);
# If it's a route exception (generated by Dancer) and we're also using the
# Plugin, then the plugin will handle the exception using its own hook into
# the error system. This should be able to removed in the future with
return if $_[0] =~ /^Route exception/
&& $INC{'Dancer2/Plugin/LogReport.pm'};
$self->log(error => @_);
};
sub log # no protoypes in Dancer2
{ my ($self, $level, $msg) = @_;
my %options;
# If only using the logger on its own (without the associated plugin), make
# it behave like a normal Dancer logger
unless ($INC{'Dancer2/Plugin/LogReport.pm'})
{ $msg = $self->format_message($level, $msg);
$options{is_fatal} = 0;
}
# the levels are nearly the same.
my $reason = $level_dancer2lr{$level} || uc $level;
report \%options, $reason => $msg;
undef;
}
1;