File Coverage

lib/Log/Mini/Logger/Base.pm
Criterion Covered Total %
statement 43 45 95.5
branch 6 6 100.0
condition 3 4 75.0
subroutine 15 17 88.2
pod 0 9 0.0
total 67 81 82.7


line stmt bran cond sub pod time code
1             package Log::Mini::Logger::Base;
2              
3 5     5   75403 use strict;
  5         20  
  5         142  
4 5     5   38 use warnings;
  5         11  
  5         146  
5              
6 5     5   29 use Carp qw(croak);
  5         22  
  5         233  
7 5     5   37 use List::Util qw(first);
  5         9  
  5         583  
8 5     5   2239 use Time::Moment;
  5         7108  
  5         2449  
9              
10              
11             my $LEVELS = {
12             error => 1,
13             warn => 2,
14             info => 3,
15             debug => 4,
16             trace => 5,
17             };
18              
19             sub new
20             {
21 39     39 0 27772 my $class = shift;
22 39         88 my (%params) = @_;
23              
24 39         67 my $self = {};
25 39         64 bless $self, $class;
26              
27 39   100     189 $self->{'level'} = $params{'level'} || 'error';
28              
29 39         116 return $self;
30             }
31              
32             sub set_level
33             {
34 32     32 0 8649 my $self = shift;
35 32         51 my ($new_level) = @_;
36              
37             croak('Unknown log level')
38 32 100       254 unless $LEVELS->{$new_level};
39              
40 31         45 $self->{'level'} = $new_level;
41              
42 31         71 return 1;
43             }
44              
45             sub level
46             {
47 2     2 0 16 my $self = shift;
48              
49 2   50     11 return $self->{level} || 'error';
50             }
51              
52 0     0 0 0 sub log { return shift->_log(shift, @_) }
53 10     10 0 1425 sub info { return shift->_log('info', @_) }
54 13     13 0 2834 sub error { return shift->_log('error', @_) }
55 13     13 0 6639 sub warn { return shift->_log('warn', @_) }
56 13     13 0 6387 sub debug { return shift->_log('debug', @_) }
57 10     10 0 1383 sub trace { return shift->_log('trace', @_) }
58              
59             sub _log
60             {
61 59     59   79 my $self = shift;
62 59         82 my $level = shift;
63 59         65 my $message = shift;
64              
65 59 100       164 return if $LEVELS->{$level} > $LEVELS->{$self->{'level'}};
66              
67 49         98 my $time = $self->_getCurrentTime();
68              
69 49         214 my $text = sprintf("%s [%s] %s\n", $time, $level, $message);
70 49 100       125 $text = sprintf($text, @_) if (@_);
71              
72 49         150 $self->_print($text);
73              
74 49         206 return 1;
75             }
76              
77 0     0   0 sub _print { croak 'Not implemented!' }
78              
79             sub _getCurrentTime
80             {
81 49     49   1757 return Time::Moment->now->strftime('%Y-%m-%d %T%3f');
82             }
83              
84             1;