File: LogReport.pm

package info (click to toggle)
liblog-report-perl 1.40-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 568 kB
  • sloc: perl: 2,905; makefile: 8
file content (85 lines) | stat: -rw-r--r-- 2,167 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Copyrights 2007-2025 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 Dancer::Logger::LogReport;{
our $VERSION = '1.40';
}

use base 'Dancer::Logger::Abstract', 'Exporter';

use strict;
use warnings;

use Scalar::Util            qw/blessed/;
use Log::Report             'log-report', import => 'report';
use Log::Report::Dispatcher ();

our $AUTHORITY = 'cpan:MARKOV';

our @EXPORT    = qw/
    trace
    assert
    notice
    alert
    panic
    /;

my %level_dancer2lr =
  ( core  => 'TRACE'
  , debug => 'TRACE'
  );


# Add some extra 'levels'
sub trace   { goto &Dancer::Logger::debug  }
sub assert  { goto &Dancer::Logger::assert }
sub notice  { goto &Dancer::Logger::notice }
sub panic   { goto &Dancer::Logger::panic  }
sub alert   { goto &Dancer::Logger::alert  }

sub Dancer::Logger::assert
{ my $l = logger(); $l && $l->_log(assert => _serialize(@_)) }

sub Dancer::Logger::notice
{ my $l = logger(); $l && $l->_log(notice => _serialize(@_)) }

sub Dancer::Logger::alert
{ my $l = logger(); $l && $l->_log(alert  => _serialize(@_)) }

sub Dancer::Logger::panic
{ my $l = logger(); $l && $l->_log(panic  => _serialize(@_)) }
 
#sub init(@)
#{   my $self = shift;
#    $self->SUPER::init(@_);
#}
 
sub _log {
    my ($self, $level, $params) = @_;

    # all dancer levels are the same as L::R levels, except:
    my $msg;
    if(blessed $params && $params->isa('Log::Report::Message'))
    {   $msg = $params;
    }
    else
    {   $msg = $self->format_message($level => $params);
        $msg =~ s/\n+$//;
    }

    # The levels are nearly the same.
    my $reason = $level_dancer2lr{$level} // uc $level;

    # Gladly, report() does not get confused between Dancer's use of
    # Try::Tiny and Log::Report's try() which starts a new dispatcher.
    report {is_fatal => 0}, $reason => $msg;

    undef;
}
 
1;