1#!/usr/bin/perl 2########################################################################## 3# Check basic variable substitution. 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 14use warnings; 15use strict; 16 17use Test::More; 18BEGIN { plan tests => 8 } 19use Log::Log4perl qw(get_logger); 20 21######################################################## 22# Wrong variable name 23######################################################## 24my $conf = q( 25screen = Log::Log4perl::Appender::Screen 26log4perl.category = WARN, ScreenApp 27log4perl.appender.ScreenApp = ${screen1} 28log4perl.appender.ScreenApp.layout = \ 29 Log::Log4perl::Layout::PatternLayout 30log4perl.appender.ScreenApp.layout.ConversionPattern = %d %F{1} %L> %m %n 31); 32 33eval { Log::Log4perl::init(\$conf) }; 34 35like($@, qr/Undefined Variable 'screen1'/); 36 37######################################################## 38# Replacing appender class name 39######################################################## 40$conf = q( 41screen = Log::Log4perl::Appender::TestBuffer 42log4perl.category = WARN, BufferApp 43log4perl.appender.BufferApp = ${screen} 44log4perl.appender.BufferApp.layout = \ 45 Log::Log4perl::Layout::PatternLayout 46log4perl.appender.BufferApp.layout.ConversionPattern = %d %F{1} %L> %m %n 47); 48 49Log::Log4perl::init(\$conf); 50my $logger = get_logger(""); 51$logger->error("foobar"); 52my $buffer = Log::Log4perl::Appender::TestBuffer->by_name("BufferApp"); 53like($buffer->buffer, qr/foobar/); 54 55######################################################## 56# Replacing appender class name 57######################################################## 58$conf = q( 59 layout_class = Log::Log4perl::Layout::PatternLayout 60 layout_pattern = %d %F{1} %L> %m %n 61 62 log4perl.category.Bar.Twix = WARN, Logfile, Screen 63 64 log4perl.appender.Logfile = Log::Log4perl::Appender::TestBuffer 65 log4perl.appender.Logfile.filename = test.log 66 log4perl.appender.Logfile.layout = ${layout_class} 67 log4perl.appender.Logfile.layout.ConversionPattern = ${layout_pattern} 68 69 log4perl.appender.Screen = Log::Log4perl::Appender::TestBuffer 70 log4perl.appender.Screen.layout = ${layout_class} 71 log4perl.appender.Screen.layout.ConversionPattern = ${layout_pattern} 72); 73 74Log::Log4perl::init(\$conf); 75$logger = get_logger("Bar::Twix"); 76$logger->error("foobar"); 77 78$buffer = Log::Log4perl::Appender::TestBuffer->by_name("Logfile"); 79like($buffer->buffer, qr/foobar/); 80$buffer = Log::Log4perl::Appender::TestBuffer->by_name("Screen"); 81like($buffer->buffer, qr/foobar/); 82 83######################################################## 84# Multi-Line variable 85######################################################## 86$conf = q( 87 layout_class = \ 88Log::Log4perl::\ 89Layout::PatternLayout 90 layout_pattern = %d %F{1} \ 91%L> \ 92%m \ 93%n 94 log4perl.category.Bar.Twix = WARN, Logfile, Screen 95 96 log4perl.appender.Logfile = Log::Log4perl::Appender::TestBuffer 97 log4perl.appender.Logfile.filename = test.log 98 log4perl.appender.Logfile.layout = ${layout_class} 99 log4perl.appender.Logfile.layout.ConversionPattern = ${layout_pattern} 100 101 log4perl.appender.Screen = Log::Log4perl::Appender::TestBuffer 102 log4perl.appender.Screen.layout = ${layout_class} 103 log4perl.appender.Screen.layout.ConversionPattern = ${layout_pattern} 104); 105 106Log::Log4perl::init(\$conf); 107$logger = get_logger("Bar::Twix"); 108$logger->error("foobar"); 109 110$buffer = Log::Log4perl::Appender::TestBuffer->by_name("Logfile"); 111like($buffer->buffer, qr/foobar/); 112$buffer = Log::Log4perl::Appender::TestBuffer->by_name("Screen"); 113like($buffer->buffer, qr/foobar/); 114 115######################################################## 116# Environment variable substitution 117######################################################## 118$ENV{layout_class} = "Log::Log4perl::Layout::PatternLayout"; 119$ENV{layout_pattern} = "%d %F{1} %L> %m %n"; 120 121$conf = q( 122 log4perl.category.Bar.Twix = WARN, Logfile, Screen 123 124 log4perl.appender.Logfile = Log::Log4perl::Appender::TestBuffer 125 log4perl.appender.Logfile.filename = test.log 126 log4perl.appender.Logfile.layout = ${layout_class} 127 log4perl.appender.Logfile.layout.ConversionPattern = ${layout_pattern} 128 129 log4perl.appender.Screen = Log::Log4perl::Appender::TestBuffer 130 log4perl.appender.Screen.layout = ${layout_class} 131 log4perl.appender.Screen.layout.ConversionPattern = ${layout_pattern} 132); 133 134Log::Log4perl::init(\$conf); 135$logger = get_logger("Bar::Twix"); 136$logger->error("foobar"); 137 138$buffer = Log::Log4perl::Appender::TestBuffer->by_name("Logfile"); 139like($buffer->buffer, qr/foobar/); 140$buffer = Log::Log4perl::Appender::TestBuffer->by_name("Screen"); 141like($buffer->buffer, qr/foobar/); 142