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
|
###########################################
# Test Suite for Log::Log4perl
# warp_message cases
# Mike Schilli, 2003 (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::More tests => 5;
use Log::Log4perl;
use Log::Log4perl::Appender::TestBuffer;
my $EG_DIR = "eg";
$EG_DIR = "../eg" unless -d $EG_DIR;
######################################################################
# warp_message undef: Concatenation
######################################################################
Log::Log4perl->init( \ <<EOT );
log4perl.rootLogger=DEBUG, A1
log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A1.layout=PatternLayout
log4perl.appender.A1.layout.ConversionPattern=%m%n
EOT
my $app = Log::Log4perl::Appender::TestBuffer->by_name("A1");
my $logger = Log::Log4perl->get_logger("");
$logger->debug("Chunk1", "Chunk2", "Chunk3");
is($app->buffer(), "Chunk1Chunk2Chunk3\n", "warp_message undef");
######################################################################
# warp_message undef: Concatenation plus JOIN_MSG_ARRAY_CHAR
######################################################################
Log::Log4perl->init( \ <<EOT );
log4perl.rootLogger=DEBUG, A1
log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer
log4perl.appender.A1.layout=PatternLayout
log4perl.appender.A1.layout.ConversionPattern=%m%n
EOT
$Log::Log4perl::JOIN_MSG_ARRAY_CHAR = "bang!";
$app = Log::Log4perl::Appender::TestBuffer->by_name("A1");
$logger = Log::Log4perl->get_logger("");
$logger->debug("Chunk1", "Chunk2", "Chunk3");
is($app->buffer(), "Chunk1bang!Chunk2bang!Chunk3\n",
"warp_message undef (JOIN_MSG_ARRAY_CHAR)");
$Log::Log4perl::JOIN_MSG_ARRAY_CHAR = ""; # back to default
######################################################################
# warp_message 0
######################################################################
Log::Log4perl->init( \ <<EOT );
log4perl.rootLogger=DEBUG, A1
log4perl.appender.A1=Log::Log4perl::Appender::TestArrayBuffer
log4perl.appender.A1.layout=NoopLayout
log4perl.appender.A1.warp_message=0
EOT
$app = Log::Log4perl::Appender::TestArrayBuffer->by_name("A1");
$logger = Log::Log4perl->get_logger("");
$logger->debug("Chunk1", "Chunk2", "Chunk3");
is($app->buffer(), "[Chunk1,Chunk2,Chunk3]",
"warp_message 0 (NoopLayout)");
######################################################################
# warp_message = code ref
######################################################################
Log::Log4perl->init( \ <<'EOT' );
log4perl.rootLogger=DEBUG, A1
log4perl.appender.A1=Log::Log4perl::Appender::TestArrayBuffer
log4perl.appender.A1.layout=NoopLayout
log4perl.appender.A1.warp_message = sub { $#_ = 2 if @_ > 3; \
return @_; }
EOT
$app = Log::Log4perl::Appender::TestArrayBuffer->by_name("A1");
$logger = Log::Log4perl->get_logger("");
$logger->debug("Chunk1", "Chunk2", "Chunk3", "Chunk4");
is($app->buffer(), "[Chunk1,Chunk2,Chunk3]",
"warp_message = function (by cref)");
######################################################################
# warp_message = function
######################################################################
my $COUNTER = 0;
sub warp_my_message {
my @chunks = @_;
unshift @chunks, ++$COUNTER;
return @chunks;
}
Log::Log4perl->init( \ <<'EOT' );
log4perl.rootLogger=DEBUG, A1
log4perl.appender.A1=Log::Log4perl::Appender::TestArrayBuffer
log4perl.appender.A1.layout=NoopLayout
log4perl.appender.A1.warp_message = main::warp_my_message
EOT
$app = Log::Log4perl::Appender::TestArrayBuffer->by_name("A1");
$logger = Log::Log4perl->get_logger("");
$logger->debug("Chunk1", "Chunk2", "Chunk3");
is($app->buffer(), "[1,Chunk1,Chunk2,Chunk3]",
"warp_message = function (by name)");
|