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   3610 use strict;
  7         14  
  7         219  
6 7     7   39 use warnings;
  7         13  
  7         378  
7              
8             package Raisin::Plugin::Logger;
9             $Raisin::Plugin::Logger::VERSION = '0.93';
10 7     7   42 use parent 'Raisin::Plugin';
  7         14  
  7         42  
11              
12 7     7   372 use Carp qw(carp);
  7         15  
  7         335  
13 7     7   1890 use Data::Dumper qw(Dumper);
  7         18934  
  7         393  
14 7     7   3884 use POSIX qw(strftime);
  7         46391  
  7         110  
15 7     7   11298 use Plack::Util;
  7         64  
  7         310  
16 7     7   3699 use Time::HiRes qw(time);
  7         9110  
  7         36  
17              
18             sub build {
19 6     6 1 23 my ($self, %args) = @_;
20              
21 6 100       27 my $logger = $args{fallback} ? 'Raisin::Logger' : 'Log::Dispatch';
22              
23 6         12 my $obj;
24 6 100       12 eval { $obj = Plack::Util::load_class($logger) } || do {
  6         21  
25 1         444 carp 'Can\'t load `Log::Dispatch`. Fallback to `Raisin::Logger`!';
26 1         157 $obj = Plack::Util::load_class('Raisin::Logger');
27             };
28              
29 6         84 $self->{logger} = $obj->new(%args);
30              
31             $self->register(log => sub {
32 1 50   1   6 shift if ref($_[0]);
        1      
33 1         3 $self->message(@_);
34 6         69 });
35             }
36              
37             sub message {
38 1     1 0 3 my ($self, $level, $message, @args) = @_;
39              
40 1         4 my $t = time;
41 1         92 my $time = strftime '%Y-%m-%dT%H:%M:%S', localtime $t;
42 1         11 $time .= sprintf '.%03d', ($t - int($t)) * 1000;
43              
44 1 50       4 $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__