1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
###########################################
# Test Suite for Appender additivity
# Mike Schilli, 2002 (m@perlmeister.com)
###########################################
BEGIN {
if($ENV{INTERNAL_DEBUG}) {
require Log::Log4perl::InternalDebug;
Log::Log4perl::InternalDebug->enable();
}
}
#########################
# change 'tests => 1' to 'tests => last_test_to_print';
#########################
use Test;
BEGIN { plan tests => 9 };
use Log::Log4perl qw(get_logger :levels);
use Log::Log4perl::Appender::TestBuffer;
my $EG_DIR = "eg";
$EG_DIR = "../eg" unless -d $EG_DIR;
ok(1); # If we made it this far, we're ok.
######################################################################
# Define the root logger and another logger, additivity on
######################################################################
Log::Log4perl->init(\<<'EOT');
log4perl.logger = INFO, A1
log4perl.logger.Twix.Bar = DEBUG, A2
log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
EOT
my $logger = get_logger("Twix::Bar");
$logger->info("Percolate this!");
my $buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
my $buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
ok($buf1, "INFO - Percolate this!\n");
ok($buf2, "INFO - Percolate this!\n");
Log::Log4perl::Appender::TestBuffer->reset();
######################################################################
# Define the root logger and another logger, additivity off
######################################################################
Log::Log4perl->init(\<<'EOT');
log4perl.logger = INFO, A1
log4perl.logger.Twix.Bar = DEBUG, A2
log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
log4perl.additivity.Twix.Bar = false
EOT
$logger = get_logger("Twix::Bar");
$logger->info("Percolate this!");
$buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
$buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
ok($buf1, ""); # Not supposed to show up in the root logger
ok($buf2, "INFO - Percolate this!\n");
Log::Log4perl::Appender::TestBuffer->reset();
######################################################################
# Define the root logger and another logger, additivity on explicitely
######################################################################
Log::Log4perl->init(\<<'EOT');
log4perl.logger = INFO, A1
log4perl.logger.Twix.Bar = DEBUG, A2
log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
log4perl.additivity.Twix.Bar = true
EOT
$logger = get_logger("Twix::Bar");
$logger->info("Percolate this!");
$buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
$buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
ok($buf1, "INFO - Percolate this!\n");
ok($buf2, "INFO - Percolate this!\n");
Log::Log4perl::Appender::TestBuffer->reset();
######################################################################
# Additivity set via method after init
# https://github.com/mschilli/log4perl/issues/29
######################################################################
Log::Log4perl->init(\<<'EOT');
log4perl.rootLogger = INFO, A1
log4perl.logger.Twix.Bar = INFO, A2
log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A1.layout=Log::Log4perl::Layout::SimpleLayout
log4perl.appender.A2=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A2.layout=Log::Log4perl::Layout::SimpleLayout
EOT
$logger = get_logger("Twix::Bar");
$logger->level( $INFO );
$logger->additivity( 0 );
$logger->info("Only for Twix");
$buf1 = Log::Log4perl::Appender::TestBuffer->by_name("A1")->buffer();
$buf2 = Log::Log4perl::Appender::TestBuffer->by_name("A2")->buffer();
ok($buf1, "");
ok($buf2, "INFO - Only for Twix\n");
Log::Log4perl::Appender::TestBuffer->reset();
|