File Coverage

blib/lib/WebService/Mattermost/Util/Logger.pm
Criterion Covered Total %
statement 20 20 100.0
branch 1 2 50.0
condition n/a
subroutine 9 9 100.0
pod n/a
total 30 31 96.7


line stmt bran cond sub pod time code
1             package WebService::Mattermost::Util::Logger;
2              
3             # ABSTRACT: Internal logger.
4              
5 9     9   169258 use Moo;
  9         6290  
  9         53  
6 9     9   4797 use Mojo::Util 'monkey_patch';
  9         335679  
  9         532  
7 9     9   3902 use Mojo::Log;
  9         237701  
  9         77  
8 9     9   887 use Types::Standard 'InstanceOf';
  9         61036  
  9         70  
9              
10             ################################################################################
11              
12             has logger => (is => 'ro', isa => InstanceOf['Mojo::Log'], lazy => 1, builder => 1);
13              
14             has logger_store => (is => 'rw', isa => InstanceOf['Mojo::Log']);
15              
16             ################################################################################
17              
18             monkey_patch 'Mojo::Log',
19 1     1   37     debugf => sub { shift->debug(sprintf shift, @_) },
20 1     1   36     infof => sub { shift->info(sprintf shift, @_) },
21 1     1   36     fatalf => sub { shift->fatal(sprintf shift, @_) },
22 2     2   68     warnf => sub { shift->warn(sprintf shift, @_) };
23              
24             ################################################################################
25              
26             sub _build_logger {
27 9     9   16892     my $self = shift;
28              
29 9 50       134     unless ($self->logger_store) {
30 9         110         $self->logger_store(Mojo::Log->new());
31                 }
32              
33 9         731     return $self->logger_store;
34             }
35              
36             ################################################################################
37              
38             1;
39              
40             __END__
41            
42             =pod
43            
44             =encoding UTF-8
45            
46             =head1 NAME
47            
48             WebService::Mattermost::Util::Logger - Internal logger.
49            
50             =head1 VERSION
51            
52             version 0.26
53            
54             =head1 DESCRIPTION
55            
56             Patched instance of C<Mojo::Log> with some wrapping methods.
57            
58             =head2 ATTRIBUTES
59            
60             =over 4
61            
62             =item C<logger>
63            
64             A C<Mojo::Log> object with additional methods:
65            
66             =over 8
67            
68             =item C<debugf()>
69            
70             $self->logger->debugf('sprintf for %s', 'debug'); # sprintf for debug
71            
72             =item C<infof()>
73            
74             $self->logger->infof('sprintf for %s', 'info'); # sprintf for info
75            
76             =item C<fatalf()>
77            
78             $self->logger->fatalf('sprintf for %s', 'fatal'); # sprintf for fatal
79            
80             =item C<warnf()>
81            
82             $self->logger->warnf('sprintf for %s', 'warn'); # sprintf for warn
83            
84             =back
85            
86             =back
87            
88             =head1 AUTHOR
89            
90             Mike Jones <mike@netsplit.org.uk>
91            
92             =head1 COPYRIGHT AND LICENSE
93            
94             This software is Copyright (c) 2020 by Mike Jones.
95            
96             This is free software, licensed under:
97            
98             The MIT (X11) License
99            
100             =cut
101