File Coverage

blib/lib/Raisin/Plugin/Logger.pm
Criterion Covered Total %
statement 41 41 100.0
branch 6 8 75.0
condition n/a
subroutine 12 12 100.0
pod 1 2 50.0
total 60 63 95.2


line stmt bran cond sub pod time code
1             #!perl
2             #PODNAME: Raisin::Plugin::Logger
3             #ABSTRACT: Logger plugin for Raisin.
4              
5 7     7   3816 use strict;
  7         64  
  7         231  
6 7     7   37 use warnings;
  7         14  
  7         355  
7              
8             package Raisin::Plugin::Logger;
9             $Raisin::Plugin::Logger::VERSION = '0.92';
10 7     7   39 use parent 'Raisin::Plugin';
  7         16  
  7         45  
11              
12 7     7   451 use Carp qw(carp);
  7         14  
  7         337  
13 7     7   2024 use Data::Dumper qw(Dumper);
  7         19519  
  7         438  
14 7     7   4404 use POSIX qw(strftime);
  7         47508  
  7         83  
15 7     7   10778 use Plack::Util;
  7         77  
  7         276  
16 7     7   3763 use Time::HiRes qw(time);
  7         8978  
  7         38  
17              
18             sub build {
19 6     6 1 30 my ($self, %args) = @_;
20              
21 6 100       28 my $logger = $args{fallback} ? 'Raisin::Logger' : 'Log::Dispatch';
22              
23 6         8 my $obj;
24 6 100       22 eval { $obj = Plack::Util::load_class($logger) } || do {
  6         20  
25 1         397 carp 'Can\'t load `Log::Dispatch`. Fallback to `Raisin::Logger`!';
26 1         158 $obj = Plack::Util::load_class('Raisin::Logger');
27             };
28              
29 6         80 $self->{logger} = $obj->new(%args);
30              
31             $self->register(log => sub {
32 1 50   1   5 shift if ref($_[0]);
        1      
33 1         3 $self->message(@_);
34 6         71 });
35             }
36              
37             sub message {
38 1     1 0 3 my ($self, $level, $message, @args) = @_;
39              
40 1         3 my $t = time;
41 1         84 my $time = strftime '%Y-%m-%dT%H:%M:%S', localtime $t;
42 1         12 $time .= sprintf '.%03d', ($t - int($t)) * 1000;
43              
44 1 50       3 $message = ref($message) ? Dumper($message) : $message;
45              
46             $self->{logger}->log(
47 1         7 level => $level,
48             message => sprintf "$time $message\n", @args,
49             );
50             }
51              
52             1;
53              
54             __END__