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.007001';
3             # ABSTRACT: Super simple logger made for playing with Log::Contextual
4              
5 15     27   75568 use strict;
  15         37  
  15         416  
6 15     27   83 use warnings;
  15         30  
  15         592  
7              
8             {
9             for my $name (qw( trace debug info warn error fatal )) {
10              
11 15     27   77 no strict 'refs';
  15         35  
  15         5488  
12              
13             *{$name} = sub {
14 97     97   178 my $self = shift;
15              
16             $self->_log($name, @_)
17 97 50       370 if ($self->{$name});
18             };
19              
20             *{"is_$name"} = sub {
21 122     122   262 my $self = shift;
22 122         749 return $self->{$name};
23             };
24             }
25             }
26              
27             sub new {
28 23     23 1 71444 my ($class, $args) = @_;
29 23         73 my $self = bless {}, $class;
30              
31 23         49 $self->{$_} = 1 for @{$args->{levels}};
  23         180  
32 23   100 1   141 $self->{coderef} = $args->{coderef} || sub { print STDERR @_ };
  1         49  
33              
34 23 100       87 if (my $upto = $args->{levels_upto}) {
35              
36 1         5 my @levels = (qw( trace debug info warn error fatal ));
37 1         3 my $i = 0;
38 1         2 for (@levels) {
39 2 100       6 last if $upto eq $_;
40 1         3 $i++
41             }
42 1         4 for ($i .. $#levels) {
43 5         11 $self->{$levels[$_]} = 1
44             }
45              
46             }
47 23         299 return $self;
48             }
49              
50             sub _log {
51 97     97   227 my $self = shift;
52 97         179 my $level = shift;
53 97         272 my $message = join("\n", @_);
54 97 100       629 $message .= "\n" unless $message =~ /\n$/;
55 97         459 $self->{coderef}->(sprintf("[%s] %s", $level, $message));
56             }
57              
58             1;
59              
60             __END__