File Coverage

blib/lib/App/Alice/Logger.pm
Criterion Covered Total %
statement 3 17 17.6
branch 0 4 0.0
condition n/a
subroutine 1 4 25.0
pod 0 3 0.0
total 4 28 14.2


line stmt bran cond sub pod time code
1             package App::Alice::Logger;
2              
3 4     4   28 use Any::Moose;
  4         8  
  4         47  
4              
5             has callbacks => (
6             is => 'ro',
7             isa => 'HashRef',
8             default => sub {
9             my $hashref = {map {uc $_ => [\&print_line]}
10             qw/debug info warn error fatal/};
11             }
12             );
13              
14             sub add_cb {
15 0     0 0   my ($self, $level, $cb) = @_;
16 0 0         return unless $self->callbacks->{$level};
17 0           push @{$self->callbacks->{$level}}, $cb;
  0            
18             }
19              
20             sub log {
21 0     0 0   my ($self, $level, $message) = @_;
22 0           $level = uc $level;
23 0 0         return unless @{$self->callbacks->{$level}};
  0            
24 0           $_->($level, $message) for @{$self->callbacks->{$level}};
  0            
25             }
26              
27             sub print_line {
28 0     0 0   my ($level, $message) = @_;
29 0           my ($sec, $min, $hour, $day, $mon, $year) = localtime(time);
30 0           my $datestring = sprintf "%02d:%02d:%02d %02d/%02d/%02d",
31             $hour, $min, $sec, $mon, $day, $year % 100;
32 0           print STDERR substr($level, 0, 1) . ", [$datestring] "
33             . sprintf("% 5s", $level) . " -- : $message\n";
34             }
35              
36             __PACKAGE__->meta->make_immutable;
37             1;