File: 028Additivity.t

package info (click to toggle)
liblog-log4perl-perl 1.49-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,880 kB
  • ctags: 512
  • sloc: perl: 6,457; makefile: 9
file content (124 lines) | stat: -rw-r--r-- 4,441 bytes parent folder | download | duplicates (4)
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 explicitly
######################################################################
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();