Commit | Line | Data |
436c4b82 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | |
6 | use lib 't/lib'; |
489f71b2 |
7 | use My::Module; # makes use of Log::Contextual::Easy::Default; |
8 | use My::Module2; # makes use of Log::Contextual::Easy::Package; |
436c4b82 |
9 | |
10 | # capture logging messages of My::Module, mapping "[...] xxx" to "...$sep" |
11 | sub logshort($$) { |
489f71b2 |
12 | my ($cap, $sep) = @_; |
13 | sub { |
14 | local $_ = shift; |
15 | s/^\[(.+)\] (xxx|"xxx")\n$/$1$sep/; |
16 | $$cap .= $_; |
17 | } |
436c4b82 |
18 | } |
19 | |
20 | # capture warnings |
21 | my ($cap_warn, $cap_with, $cap_set); |
22 | local $SIG{__WARN__} = logshort \$cap_warn, '!'; |
23 | |
24 | { |
489f71b2 |
25 | My::Module::log(); |
26 | My::Module2::log(); |
27 | is($cap_warn, undef, 'no logging by default'); |
436c4b82 |
28 | } |
29 | |
30 | { |
489f71b2 |
31 | local $ENV{MY_MODULE_UPTO} = 'info'; |
32 | local $ENV{MY_MODULE2_UPTO} = 'info'; |
33 | My::Module::log(); |
34 | My::Module2::log(); |
35 | is( |
36 | $cap_warn, |
37 | "info!warn!error!fatal!info!warn!error!fatal!", |
38 | 'WarnLogger enabled via ENV' |
39 | ); |
40 | $cap_warn = ''; |
436c4b82 |
41 | } |
42 | |
43 | { |
489f71b2 |
44 | use Log::Contextual::SimpleLogger; |
45 | use Log::Contextual qw(with_logger set_logger); |
436c4b82 |
46 | |
489f71b2 |
47 | set_logger( |
48 | Log::Contextual::SimpleLogger->new({ |
49 | levels => [qw(info warn error)], |
50 | coderef => logshort \$cap_set, |
51 | '/' |
52 | })); |
436c4b82 |
53 | |
489f71b2 |
54 | my $with_logger = Log::Contextual::SimpleLogger->new({ |
55 | levels => [qw(trace info fatal)], |
56 | coderef => logshort \$cap_with, |
57 | '|' |
58 | }); |
436c4b82 |
59 | |
489f71b2 |
60 | with_logger $with_logger => sub { |
61 | My::Module::log(); |
62 | My::Module2::log(); # will not be overridden |
63 | }; |
64 | is($cap_with, 'trace|info|fatal|', 'with_logger'); |
436c4b82 |
65 | |
489f71b2 |
66 | My::Module::log(); |
67 | My::Module2::log(); # will not be overridden |
68 | is($cap_set, 'info/warn/error/', 'set_logger'); |
69 | |
70 | is($cap_warn, '', 'no warnings if with_logger or set_logger'); |
436c4b82 |
71 | } |
72 | |
73 | done_testing; |
74 | |