# 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.
package
Dancer2::Logger::LogReport;
$VERSION
=
'1.39'
;
# ABSTRACT: Dancer2 logger engine for Log::Report
use
strict;
use
warnings;
use
Moo;
use
Dancer2::Core::Types;
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;