4 use Log::Contextual::SimpleLogger;
5 use Test::More qw(no_plan);
6 use Log::Contextual qw(:log set_logger);
8 my ($var1, $var2, $var3);
9 my $complex_dispatcher = do {
11 my $l1 = Log::Contextual::SimpleLogger->new({
12 levels => [qw(trace debug info warn error fatal)],
13 coderef => sub { $var1 = shift },
16 my $l2 = Log::Contextual::SimpleLogger->new({
17 levels => [qw(trace debug info warn error fatal)],
18 coderef => sub { $var2 = shift },
21 my $l3 = Log::Contextual::SimpleLogger->new({
22 levels => [qw(trace debug info warn error fatal)],
23 coderef => sub { $var3 = shift },
32 A2 => {-logger => $l2},
36 my ($package, $info) = @_;
38 my $logger = $registry{'-logger'};
39 if (my $r = $registry{$package}) {
40 $logger = $r->{'-logger'} if $r->{'-logger'};
41 my (undef, undef, undef, $sub) = caller($info->{caller_level} + 1);
42 $sub =~ s/^\Q$package\E:://g;
43 $logger = $r->{$sub} if $r->{$sub};
49 set_logger $complex_dispatcher;
51 log_debug { '1.var3' };
53 is($var3, "[debug] 1.var3\n", "default logger works");
60 is($var2, "[debug] 1.var2\n", "default package logger works");
61 is($var1, "[debug] 1.var1\n", "package::sub logger works");
68 is($var2, "[debug] 2.var2\n", "only default package logger works");
74 is($var3, "[debug] 2.var3\n", "global default logger works");
79 use Log::Contextual ':log';
82 log_debug { '1.var2' }
86 log_debug { '1.var1' }
90 use Log::Contextual ':log';
93 log_debug { '2.var2' }
97 use Log::Contextual ':log';
100 log_debug { '2.var3' }