File Coverage

blib/lib/Log/Contextual/SimpleLogger.pm
Criterion Covered Total %
statement 33 33 100.0
branch 7 8 87.5
condition 2 2 100.0
subroutine 8 8 100.0
pod 1 1 100.0
total 51 52 98.0


line stmt bran cond sub pod time code
1             package Log::Contextual::SimpleLogger;
2             $Log::Contextual::SimpleLogger::VERSION = '0.008001';
3             # ABSTRACT: Super simple logger made for playing with Log::Contextual
4              
5 16     28   141274 use strict;
  16         68  
  16         383  
6 16     16   67 use warnings;
  16         23  
  16         514  
7              
8             {
9             for my $name (qw( trace debug info warn error fatal )) {
10              
11 16     16   76 no strict 'refs';
  16         36  
  16         5401  
12              
13             *{$name} = sub {
14 110     110   199 my $self = shift;
15              
16             $self->_log($name, @_)
17 110 50       324 if ($self->{$name});
18             };
19              
20             *{"is_$name"} = sub {
21 135     135   216 my $self = shift;
22 135         614 return $self->{$name};
23             };
24             }
25             }
26              
27             sub new {
28 24     24 1 209589 my ($class, $args) = @_;
29 24         54 my $self = bless {}, $class;
30              
31 24         44 $self->{$_} = 1 for @{$args->{levels}};
  24         155  
32 24   100 1   109 $self->{coderef} = $args->{coderef} || sub { print STDERR @_ };
  1         47  
33              
34 24 100       69 if (my $upto = $args->{levels_upto}) {
35              
36 1         35 my @levels = (qw( trace debug info warn error fatal ));
37 1         3 my $i = 0;
38 1         3 for (@levels) {
39 2 100       6 last if $upto eq $_;
40 1         2 $i++
41             }
42 1         3 for ($i .. $#levels) {
43 5         9 $self->{$levels[$_]} = 1
44             }
45              
46             }
47 24         333 return $self;
48             }
49              
50             sub _log {
51 110     110   131 my $self = shift;
52 110         147 my $level = shift;
53 110         209 my $message = join("\n", @_);
54 110 100       333 $message .= "\n" unless $message =~ /\n$/;
55 110         411 $self->{coderef}->(sprintf("[%s] %s", $level, $message));
56             }
57              
58             1;
59              
60             __END__