File Coverage

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


line stmt bran cond sub pod time code
1             package Log::Contextual::SimpleLogger;
2 17     29   574664 use strict;
  17         33  
  17         796  
3 17     29   109 use warnings;
  17         71  
  17         1628  
4              
5             our $VERSION = '0.009001';
6              
7             {
8             for my $name (qw( trace debug info warn error fatal )) {
9              
10 17     29   160 no strict 'refs';
  17         31  
  17         9890  
11              
12             *{$name} = sub {
13 110     110   202 my $self = shift;
14              
15             $self->_log($name, @_)
16 110 50       483 if ($self->{$name});
17             };
18              
19             *{"is_$name"} = sub {
20 135     135   242 my $self = shift;
21 135         977 return $self->{$name};
22             };
23             }
24             }
25              
26             sub new {
27 24     24 1 2695544 my ($class, $args) = @_;
28 24         77 my $self = bless {}, $class;
29              
30 24         50 $self->{$_} = 1 for @{$args->{levels}};
  24         222  
31 24   66 1   157 $self->{coderef} = $args->{coderef} || sub { print STDERR @_ };
  1         116  
32              
33 24 100       97 if (my $upto = $args->{levels_upto}) {
34              
35 1         3 my @levels = (qw( trace debug info warn error fatal ));
36 1         2 my $i = 0;
37 1         2 for (@levels) {
38 2 100       9 last if $upto eq $_;
39 1         1 $i++
40             }
41 1         3 for ($i .. $#levels) {
42 5         53 $self->{$levels[$_]} = 1
43             }
44              
45             }
46 24         501 return $self;
47             }
48              
49             sub _log {
50 110     110   195 my $self = shift;
51 110         175 my $level = shift;
52 110         729 my $message = join("\n", @_);
53 110 100       517 $message .= "\n" unless $message =~ /\n$/;
54 110         427 $self->{coderef}->(sprintf("[%s] %s", $level, $message));
55             }
56              
57             1;
58              
59             __END__