use Log::Log4perl; use Log::Log4perl::Appender::TestBuffer; use Log::Log4perl::Appender::File; use File::Spec; use Test::More; our $LOG_DISPATCH_PRESENT = 0; BEGIN { eval { require Log::Dispatch; }; if($@) { plan skip_all => "only with Log::Dispatch"; } else { $LOG_DISPATCH_PRESENT = 1; plan tests => 1; } }; my $WORK_DIR = "tmp"; if(-d "t") { $WORK_DIR = File::Spec->catfile(qw(t tmp)); } unless (-e "$WORK_DIR"){ mkdir("$WORK_DIR", 0755) || die "can't create $WORK_DIR ($!)"; } use vars qw(@outfiles $test_logfile); $test_logfile = File::Spec->catfile($WORK_DIR,'test1.log'); @outfiles = ($test_logfile,); foreach my $f (@outfiles){ unlink $f if (-e $f); } my $conf = <init(\$conf); my $logger = Log::Log4perl->get_logger('cat1'); #hmm, I wonder how portable this is, maybe check $^O first? use vars qw($OLDOUT); #for -w open(OLDOUT, ">&STDOUT"); open (TOUCH, ">>$test_logfile");# `touch $test_logfile`; close TOUCH; open(STDOUT, ">$test_logfile") || die "Can't redirect stdout $test_logfile $!"; select(STDOUT); $| = 1; # make unbuffered $logger->debug("debugging message 1 "); $logger->info("info message 1 "); $logger->warn("warning message 1 "); $logger->fatal("fatal message 1 "); close(STDOUT); open(STDOUT, ">&OLDOUT"); my ($result, $expected); $expected = <; close F; } is ($result, $expected); foreach my $f (@outfiles){ unlink $f if (-e $f); }