1########################################### 2# Test Suite for Log::Log4perl 3# warp_message cases 4# Mike Schilli, 2003 (m@perlmeister.com) 5########################################### 6 7BEGIN { 8 if($ENV{INTERNAL_DEBUG}) { 9 require Log::Log4perl::InternalDebug; 10 Log::Log4perl::InternalDebug->enable(); 11 } 12} 13 14######################### 15# change 'tests => 1' to 'tests => last_test_to_print'; 16######################### 17use Test::More tests => 5; 18 19use Log::Log4perl; 20use Log::Log4perl::Appender::TestBuffer; 21 22my $EG_DIR = "eg"; 23$EG_DIR = "../eg" unless -d $EG_DIR; 24 25###################################################################### 26# warp_message undef: Concatenation 27###################################################################### 28Log::Log4perl->init( \ <<EOT ); 29 log4perl.rootLogger=DEBUG, A1 30 log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer 31 log4perl.appender.A1.layout=PatternLayout 32 log4perl.appender.A1.layout.ConversionPattern=%m%n 33EOT 34 35my $app = Log::Log4perl::Appender::TestBuffer->by_name("A1"); 36my $logger = Log::Log4perl->get_logger(""); 37$logger->debug("Chunk1", "Chunk2", "Chunk3"); 38 39is($app->buffer(), "Chunk1Chunk2Chunk3\n", "warp_message undef"); 40 41###################################################################### 42# warp_message undef: Concatenation plus JOIN_MSG_ARRAY_CHAR 43###################################################################### 44Log::Log4perl->init( \ <<EOT ); 45 log4perl.rootLogger=DEBUG, A1 46 log4perl.appender.A1=Log::Log4perl::Appender::TestBuffer 47 log4perl.appender.A1.layout=PatternLayout 48 log4perl.appender.A1.layout.ConversionPattern=%m%n 49EOT 50 51$Log::Log4perl::JOIN_MSG_ARRAY_CHAR = "bang!"; 52 53$app = Log::Log4perl::Appender::TestBuffer->by_name("A1"); 54$logger = Log::Log4perl->get_logger(""); 55$logger->debug("Chunk1", "Chunk2", "Chunk3"); 56 57is($app->buffer(), "Chunk1bang!Chunk2bang!Chunk3\n", 58 "warp_message undef (JOIN_MSG_ARRAY_CHAR)"); 59 60$Log::Log4perl::JOIN_MSG_ARRAY_CHAR = ""; # back to default 61 62###################################################################### 63# warp_message 0 64###################################################################### 65Log::Log4perl->init( \ <<EOT ); 66 log4perl.rootLogger=DEBUG, A1 67 log4perl.appender.A1=Log::Log4perl::Appender::TestArrayBuffer 68 log4perl.appender.A1.layout=NoopLayout 69 log4perl.appender.A1.warp_message=0 70EOT 71 72$app = Log::Log4perl::Appender::TestArrayBuffer->by_name("A1"); 73$logger = Log::Log4perl->get_logger(""); 74$logger->debug("Chunk1", "Chunk2", "Chunk3"); 75 76is($app->buffer(), "[Chunk1,Chunk2,Chunk3]", 77 "warp_message 0 (NoopLayout)"); 78 79###################################################################### 80# warp_message = code ref 81###################################################################### 82Log::Log4perl->init( \ <<'EOT' ); 83 log4perl.rootLogger=DEBUG, A1 84 log4perl.appender.A1=Log::Log4perl::Appender::TestArrayBuffer 85 log4perl.appender.A1.layout=NoopLayout 86 log4perl.appender.A1.warp_message = sub { $#_ = 2 if @_ > 3; \ 87 return @_; } 88EOT 89 90$app = Log::Log4perl::Appender::TestArrayBuffer->by_name("A1"); 91$logger = Log::Log4perl->get_logger(""); 92$logger->debug("Chunk1", "Chunk2", "Chunk3", "Chunk4"); 93 94is($app->buffer(), "[Chunk1,Chunk2,Chunk3]", 95 "warp_message = function (by cref)"); 96 97 98###################################################################### 99# warp_message = function 100###################################################################### 101my $COUNTER = 0; 102sub warp_my_message { 103 my @chunks = @_; 104 unshift @chunks, ++$COUNTER; 105 return @chunks; 106} 107 108Log::Log4perl->init( \ <<'EOT' ); 109 log4perl.rootLogger=DEBUG, A1 110 log4perl.appender.A1=Log::Log4perl::Appender::TestArrayBuffer 111 log4perl.appender.A1.layout=NoopLayout 112 log4perl.appender.A1.warp_message = main::warp_my_message 113EOT 114 115$app = Log::Log4perl::Appender::TestArrayBuffer->by_name("A1"); 116$logger = Log::Log4perl->get_logger(""); 117$logger->debug("Chunk1", "Chunk2", "Chunk3"); 118 119is($app->buffer(), "[1,Chunk1,Chunk2,Chunk3]", 120 "warp_message = function (by name)"); 121