1########################################### 2# Test Suite Log::Log4perl::NDC 3# Mike Schilli, 2002 (m@perlmeister.com) 4########################################### 5 6BEGIN { 7 if($ENV{INTERNAL_DEBUG}) { 8 require Log::Log4perl::InternalDebug; 9 Log::Log4perl::InternalDebug->enable(); 10 } 11} 12 13use warnings; 14use strict; 15 16use Test; 17 18use Log::Log4perl qw(get_logger); 19use Log::Log4perl::Level; 20use Log::Log4perl::Appender::TestBuffer; 21use Log::Log4perl::NDC; 22use Log::Log4perl::MDC; 23 24BEGIN { plan tests => 3 } 25 26# Have TestBuffer log the Log::Dispatch priority 27Log::Log4perl::Appender::TestBuffer->reset(); 28 29my $conf = <<EOT; 30log4perl.logger = ALL, BUF0 31log4perl.appender.BUF0 = Log::Log4perl::Appender::TestBuffer 32log4perl.appender.BUF0.layout = Log::Log4perl::Layout::PatternLayout 33log4perl.appender.BUF0.layout.ConversionPattern = %m <%x> 34EOT 35 36Log::Log4perl::init(\$conf); 37 38my $app0 = Log::Log4perl::Appender::TestBuffer->by_name("BUF0"); 39 40my $loga = get_logger("a"); 41 42Log::Log4perl::NDC->push("first"); 43$loga->debug("debug"); 44 45 # Push more than MAX 46Log::Log4perl::NDC->push("second"); 47Log::Log4perl::NDC->push("third"); 48Log::Log4perl::NDC->push("fourth"); 49Log::Log4perl::NDC->push("fifth"); 50Log::Log4perl::NDC->push("sixth"); 51$loga->info("info"); 52 53 # Delete NDC stack 54Log::Log4perl::NDC->remove(); 55$loga->warn("warn"); 56 57Log::Log4perl::NDC->push("seventh"); 58$loga->error("error"); 59 60ok($app0->buffer(), 61 "debug <first>info <first second third fourth sixth>warn <[undef]>error <seventh>"); 62 63Log::Log4perl::Appender::TestBuffer->reset(); 64 65Log::Log4perl::MDC->put("remote_host", "blah-host"); 66Log::Log4perl::MDC->put("ip", "blah-ip"); 67 68$conf = <<EOT; 69log4perl.logger = ALL, BUF1 70log4perl.appender.BUF1 = Log::Log4perl::Appender::TestBuffer 71log4perl.appender.BUF1.layout = Log::Log4perl::Layout::PatternLayout 72log4perl.appender.BUF1.layout.ConversionPattern = %X{remote_host}: %m %X{ip}%n 73EOT 74 75Log::Log4perl::init(\$conf); 76 77my $app1 = Log::Log4perl::Appender::TestBuffer->by_name("BUF1"); 78 79my $logb = get_logger("b"); 80 81$logb->debug("testmessage"); 82 83ok($app1->buffer(), 84 "blah-host: testmessage blah-ip\n"); 85 86# Check what happens if %X is used with an undef value 87Log::Log4perl::Appender::TestBuffer->reset(); 88 89$conf = <<EOT; 90log4perl.logger = ALL, BUF1 91log4perl.appender.BUF1 = Log::Log4perl::Appender::TestBuffer 92log4perl.appender.BUF1.layout = Log::Log4perl::Layout::PatternLayout 93log4perl.appender.BUF1.layout.ConversionPattern = %X{quack}: %m %X{ip}%n 94EOT 95 96Log::Log4perl::init(\$conf); 97 98$app1 = Log::Log4perl::Appender::TestBuffer->by_name("BUF1"); 99 100$logb = get_logger("b"); 101 102$logb->debug("testmessage"); 103 104ok($app1->buffer(), 105 "[undef]: testmessage blah-ip\n"); 106