named logger support
[p5sagit/Log-Contextual.git] / t / tagged-loggers.t
1 use strict;
2 use warnings;
3
4 use Log::Contextual::SimpleLogger;
5
6 my $var2;
7 my $var_logger2;
8 BEGIN {
9    $var_logger2 = Log::Contextual::SimpleLogger->new({
10       levels  => [qw(trace debug info warn error fatal)],
11       coderef => sub { $var2 = shift },
12    })
13 }
14
15 use Log::Contextual qw{:log with_logger set_logger set_logger_for},
16    -logger_for => { 'MyApp::View' => $var_logger2 },
17    -logger => 'MyApp::View';
18 use Test::More qw(no_plan);
19
20 my $var1;
21 my $var3;
22 BEGIN {
23    my $var_logger1 = Log::Contextual::SimpleLogger->new({
24       levels  => [qw(trace debug info warn error fatal)],
25       coderef => sub { $var1 = shift },
26    });
27
28    my $var_logger3 = Log::Contextual::SimpleLogger->new({
29       levels  => [qw(trace debug info warn error fatal)],
30       coderef => sub { $var3 = shift },
31    });
32
33    set_logger_for 'MyApp::Model' => $var_logger1;
34    set_logger_for 'MyApp::Controller' => sub {
35       my $package = shift;
36       Log::Contextual::SimpleLogger->new({
37          levels  => [qw(trace debug info warn error fatal)],
38          coderef => sub { $var3 = (shift @_) . $package },
39       })
40    };
41 };
42
43 log_debug { 'should log to $var2 from global' };
44 is($var2, "[debug] should log to \$var2 from global\n", 'tag from -logger works');
45 $var2 = '';
46
47 with_logger 'MyApp::Model' => sub {
48    log_debug { 'should log to $var1' };
49 };
50
51 is($var1, "[debug] should log to \$var1\n", 'basic tag works');
52
53 with_logger 'MyApp::View' => sub {
54    log_debug { 'should log to $var2' };
55 };
56
57 is($var2, "[debug] should log to \$var2\n", 'basic tag from -logger_for works');
58
59 with_logger 'MyApp::Controller' => sub { Animorph::lol() };
60
61 is($var3, "[debug] should log to \$var3\nAnimorph", 'with logger outside of package works');
62
63 $var3 = '';
64
65 Zilog::lol();
66
67 is($var3, "[debug] should log to \$var3\nZilog", '-package_logger => "named_logger" works');
68
69 $var3 = '';
70
71 Mario::lol();
72
73 is($var3, "[debug] should log to \$var3\nMario", '-default_logger => "named_logger" works');
74
75 BEGIN {
76    package Animorph;
77    use Log::Contextual ':log';
78
79    sub lol { log_debug { 'should log to $var3' } }
80 }
81
82 BEGIN {
83    package Zilog;
84    use Log::Contextual ':log', -package_logger => 'MyApp::Controller';
85
86    sub lol { log_debug { 'should log to $var3' } }
87 }
88
89 BEGIN {
90    package Mario;
91    use Log::Contextual ':log', -default_logger => 'MyApp::Controller';
92
93    sub lol { warn "foo"; log_debug { 'should log to $var3' } }
94 }