File Coverage

blib/lib/Log/ger/Plugin/WithWarn.pm
Criterion Covered Total %
statement 30 30 100.0
branch 4 4 100.0
condition 6 6 100.0
subroutine 9 9 100.0
pod 0 1 0.0
total 49 50 98.0


line stmt bran cond sub pod time code
1             package Log::ger::Plugin::WithWarn;
2              
3             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
4             our $DATE = '2020-03-07'; # DATE
5             our $DIST = 'Log-ger-Plugin-WithWarn'; # DIST
6             our $VERSION = '0.003'; # VERSION
7              
8 1     1   66728 use strict;
  1         12  
  1         27  
9 1     1   5 use warnings;
  1         1  
  1         22  
10              
11 1     1   4 use Log::ger ();
  1         1  
  1         436  
12              
13             sub get_hooks {
14 1     1 0 11 my %plugin_conf = @_;
15              
16             return {
17             create_routine_names => [
18             __PACKAGE__, # key
19             50, # priority
20             sub { # hook
21 3     3   2185 my %hook_args = @_;
22              
23 3         6 my $levels = \%Log::ger::Levels;
24              
25             return [{
26             logger_subs => [
27 3         16 (map { ["log_${_}_warn", $_, "default"] }
28 18         33 grep {$levels->{$_} == 30} keys %$levels),
29             ],
30             level_checker_subs => [],
31             logger_methods => [
32 3         19 (map { ["${_}_warn", $_, "default"] }
33 3         14 grep {$levels->{$_} == 30} keys %$levels),
  18         28  
34             ],
35             level_checker_methods => [
36             ],
37             }, 0];
38             }],
39             before_install_routines => [
40             __PACKAGE__, # key
41             50, # priority
42             sub { # hook
43 3     3   2874 my %hook_args = @_;
44              
45             # wrap the logger
46 3         6 for my $r (@{ $hook_args{routines} }) {
  3         8  
47 39         59 my ($code, $name, $numlevel, $type) = @$r;
48 39 100 100     170 if ($type =~ /^log(ger)?_sub/ && $name =~ /\Alog_\w+_warn\z/) {
    100 100        
49             $r->[0] = sub {
50 1     1   255 $code->(@_);
        1      
51 1         20 warn $hook_args{formatters}{default}(@_)."\n"
52 2         9 };
53             } elsif ($type =~ /log(ger)?_method/ && $name =~ /\A\w+_warn\z/) {
54             $r->[0] = sub {
55 1     1   212 $code->(@_);
56 1         26 shift;
57 1         4 warn $hook_args{formatters}{default}(@_)."\n"
58 1         17 };
59             }
60             }
61             },
62 1         8 ],
63             };
64             }
65              
66             1;
67             # ABSTRACT: Add *_warn logging routines
68              
69             __END__