File Coverage

lib/Log/Mini/LoggerBase.pm
Criterion Covered Total %
statement 49 51 96.0
branch 6 6 100.0
condition 3 4 75.0
subroutine 17 19 89.4
pod 0 9 0.0
total 75 89 84.2


line stmt bran cond sub pod time code
1             package Log::Mini::LoggerBase;
2              
3 5     5   62339 use strict;
  5         15  
  5         114  
4 5     5   15 use warnings;
  5         7  
  5         109  
5              
6 5     5   24 use Carp qw(croak);
  5         6  
  5         202  
7 5     5   32 use List::Util qw(first);
  5         8  
  5         427  
8 5     5   1762 use Time::Moment;
  5         5529  
  5         168  
9              
10 5     5   2488 use Data::Dumper;
  5         27844  
  5         305  
11 5     5   32 use feature qw/say/;
  5         7  
  5         2272  
12              
13             my $LEVELS = {
14             error => 1,
15             warn => 2,
16             info => 3,
17             debug => 4,
18             trace => 5
19             };
20              
21             sub new {
22              
23             # say STDERR Dumper(\@_);
24 30     30 0 23588 my $class = shift;
25 30         60 my (%params) = @_;
26              
27 30         42 my $self = {};
28 30         39 bless $self, $class;
29              
30 30   100     175 $self->{'level'} = $params{'level'} || 'error';
31              
32 30         69 return $self;
33             }
34              
35             sub set_level {
36 28     28 0 2405 my $self = shift;
37 28         40 my ($new_level) = @_;
38              
39             croak('Unknown log level')
40 28 100   84   222 unless first { $new_level eq $_ } keys %$LEVELS;
  84         267  
41              
42 27         95 $self->{'level'} = $new_level;
43              
44 27         59 return;
45             }
46              
47             sub level {
48 2     2 0 23 my $self = shift;
49              
50 2   50     14 return $self->{level} || 'error';
51             }
52              
53 0     0 0 0 sub log { return shift->_log( shift, @_) }
54 3     3 0 846 sub info { return shift->_log( 'info', @_ ) }
55 13     13 0 2139 sub error { return shift->_log( 'error', @_ ) }
56 13     13 0 6609 sub warn { return shift->_log( 'warn', @_ ) }
57 12     12 0 5913 sub debug { return shift->_log( 'debug', @_ ) }
58 1     1 0 278 sub trace { return shift->_log( 'trace', @_ ) }
59              
60             sub _log {
61 42     42   53 my $self = shift;
62 42         45 my $level = shift;
63 42         37 my $message = shift;
64              
65 42 100       107 return if $LEVELS->{$level} > $LEVELS->{ $self->{'level'} };
66              
67 39         1163 my $time = Time::Moment->now->strftime('%Y-%m-%d %T%3f');
68              
69 39         174 my $text = sprintf("%s [%s] %s\n", $time, $level, $message);
70 39 100       94 $text = sprintf($text, @_) if (@_);
71              
72 39         100 $self->_print($text);
73              
74 39         171 return;
75             }
76              
77 0     0     sub _print { croak 'Not implemented!' }
78              
79             1;