File Coverage

blib/lib/Kelp/Module/Logger.pm
Criterion Covered Total %
statement 31 31 100.0
branch 1 2 50.0
condition n/a
subroutine 9 9 100.0
pod 1 2 50.0
total 42 44 95.4


line stmt bran cond sub pod time code
1              
2             use Kelp::Base 'Kelp::Module';
3 1     1   372  
  1         2  
  1         5  
4             use Carp;
5 1     1   52 use Log::Dispatch;
  1         1  
  1         60  
6 1     1   486 use Data::Dumper;
  1         189105  
  1         32  
7 1     1   9  
  1         1  
  1         313  
8             my ( $self, %args ) = @_;
9             Log::Dispatch->new(%args);
10 1     1   3 }
11 1         3  
12             my ( $self, %args ) = @_;
13             $self->{logger} = $self->_logger(%args);
14              
15 1     1 1 2 # Register a few levels
16 1         3 my @levels_to_register = qw/debug info error/;
17              
18             # Build the registration hash
19 1         40 my %LEVELS = map {
20             my $level = $_;
21             $level => sub {
22             shift;
23 1         2 $self->message( $level, @_ );
  3         3  
24             };
25 3     3   75 } @levels_to_register;
26 3         8  
27 3         11 # Register the log levels
28             $self->register(%LEVELS);
29              
30             # Also register the message method as 'logger'
31 1         9 $self->register( logger => sub {
32             shift;
33             $self->message(@_);
34             });
35 1     1   38 }
36 1         3  
37 1         5 my ( $self, $level, @messages ) = @_;
38             my @a = localtime(time);
39             my $date = sprintf(
40             "%4i-%02i-%02i %02i:%02i:%02i",
41 4     4 0 9 $a[5] + 1900,
42 4         80 $a[4] + 1,
43 4         26 $a[3], $a[2], $a[1], $a[0]
44             );
45              
46             for (@messages) {
47             $self->{logger}->log(
48             level => $level,
49             message => sprintf( '%s - %s - %s',
50 4         9 $date, $level, ref($_) ? Dumper($_) : $_ )
51             );
52 4 50       26 }
53             }
54              
55             1;
56              
57              
58             =pod
59              
60             =head1 NAME
61              
62             Kelp::Module::Logger - Logger for Kelp applications
63              
64             =head1 SYNOPSIS
65              
66             # conf/config.pl
67             {
68             modules => ['Logger'],
69             modules_init => {
70             Logger => {
71             outputs => [
72             [ 'Screen', min_level => 'debug', newline => 1 ],
73             ]
74             },
75             },
76             }
77              
78             # lib/MyApp.pm
79             sub run {
80             my $self = shift;
81             my $app = $self->SUPER::run(@_);
82             ...;
83             $app->info('Kelp is ready to rock!');
84             return $app;
85             }
86              
87              
88             =head1 DESCRIPTION
89              
90             This module provides an log interface for Kelp web application. It uses
91             L<Log::Dispatch> as underlying logging module.
92              
93             =head1 REGISTERED METHODS
94              
95             =head2 debug
96              
97             =head2 info
98              
99             =head2 error
100              
101             =cut