Log-Log4perl
view release on metacpan or search on metacpan
t/017Watch.t view on Meta::CPAN
trunc($testconf);
};
# ***************************************************************
# Check the 'recreate' feature with signal handling
SKIP: {
skip "File recreation not supported on Win32", 9 if is_like_windows();
# Use two appenders to confirm that both files are recreated when the
# signal is received, rather than just whichever watcher was created
# last.
my $conf5 = <<EOL;
log4j.category.animal.dog = INFO, myAppender1
log4j.category.animal.cat = INFO, myAppender2
log4j.appender.myAppender1 = Log::Log4perl::Appender::File
log4j.appender.myAppender1.layout = Log::Log4perl::Layout::SimpleLayout
log4j.appender.myAppender1.filename = $testfile
log4j.appender.myAppender1.recreate = 1
log4j.appender.myAppender1.recreate_check_signal = USR1
log4j.appender.myAppender2 = Log::Log4perl::Appender::File
log4j.appender.myAppender2.layout = Log::Log4perl::Layout::SimpleLayout
log4j.appender.myAppender2.filename = $testfile2
log4j.appender.myAppender2.recreate = 1
log4j.appender.myAppender2.recreate_check_signal = USR1
EOL
Log::Log4perl->init(\$conf5);
my $logger = Log::Log4perl::get_logger('animal.dog');
$logger->info("test1");
ok(-f $testfile, "recreate_signal - testfile created");
my $logger2 = Log::Log4perl::get_logger('animal.cat');
$logger2->info("test1");
ok(-f $testfile2, "recreate_signal - testfile created");
unlink $testfile, $testfile2;
ok(!-f $testfile, "recreate_signal - testfile deleted");
ok(!-f $testfile2, "recreate_signal - testfile2 deleted");
$logger->info("test1");
$logger2->info("test1");
ok(!-f $testfile, "recreate_signal - testfile still missing");
ok(!-f $testfile2, "recreate_signal - testfile2 still missing");
ok(kill('USR1', $$), "sending signal");
$logger->info("test1");
$logger2->info("test1");
ok(-f $testfile, "recreate_signal - testfile reinstated");
ok(-f $testfile2, "recreate_signal - testfile2 reinstated");
};
SKIP: {
skip "Removing busy files not supported on Win32", 1 if is_like_windows();
# ***************************************************************
# Check the 'recreate' feature with check_interval
trunc($testfile);
my $conf3 = <<EOL;
log4j.category.animal.dog = INFO, myAppender
log4j.appender.myAppender = Log::Log4perl::Appender::File
log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
log4j.appender.myAppender.filename = $testfile
log4j.appender.myAppender.recreate = 1
log4j.appender.myAppender.recreate_check_interval = 1
log4j.appender.myAppender.mode = append
EOL
# Create logfile
Log::Log4perl->init(\$conf3);
# ... and immediately remove it
unlink $testfile or die "cannot remove file $testfile ($!)";
print "sleeping for 2 secs\n";
sleep(2);
$logger = Log::Log4perl::get_logger('animal.dog');
$logger->info("test1");
open (LOG, $testfile) or die "can't open $testfile $!";
is(scalar <LOG>, "INFO - test1\n", "recreate before first write");
close LOG;
}
# ***************************************************************
# Check the 'recreate' feature with check_interval (2nd write)
SKIP: {
skip "Signal handling not supported on Win32", 1 if is_like_windows();
trunc($testfile);
my $conf3 = <<EOL;
log4j.category.animal.dog = INFO, myAppender
log4j.appender.myAppender = Log::Log4perl::Appender::File
log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
log4j.appender.myAppender.filename = $testfile
log4j.appender.myAppender.recreate = 1
log4j.appender.myAppender.recreate_check_interval = 1
log4j.appender.myAppender.mode = append
EOL
# Create logfile
Log::Log4perl->init(\$conf3);
# Write to it
$logger = Log::Log4perl::get_logger('animal.dog');
$logger->info("test1");
# ... remove it (stupid windoze cannot remove an open file)
rename $testfile, "$testfile.old";
unlink $testfile;
print "sleeping for 2 secs\n";
sleep(2);
# ... write again
$logger->info("test2");
open (LOG, $testfile) or die "can't open $testfile $!";
is(scalar <LOG>, "INFO - test2\n", "recreate before 2nd write");
close LOG;
unlink "$testfile.old";
};
# ***************************************************************
# Check the 'recreate' feature with moved/recreated file
SKIP: {
skip "Moving busy files not supported on Win32", 1 if is_like_windows();
trunc($testfile);
my $conf3 = <<EOL;
log4j.category.animal.dog = INFO, myAppender
log4j.appender.myAppender = Log::Log4perl::Appender::File
log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
log4j.appender.myAppender.filename = $testfile
log4j.appender.myAppender.recreate = 1
log4j.appender.myAppender.recreate_check_interval = 1
log4j.appender.myAppender.mode = append
EOL
# Create logfile
Log::Log4perl->init(\$conf3);
# Get a logger, but dont write to it
$logger = Log::Log4perl::get_logger('animal.dog');
rename "$testfile", "$testfile.old" or die "Cannot rename ($!)";
# recreate it
trunc($testfile);
print "sleeping for 2 secs\n";
sleep(2);
# ... write to (hopefully) truncated file
$logger->info("test3");
open (LOG, $testfile) or die "can't open $testfile $!";
is(scalar <LOG>, "INFO - test3\n", "log to externally recreated file");
close LOG;
unlink "$testfile.old";
};
done_testing;
( run in 3.304 seconds using v1.01-cache-2.11-cpan-d8267643d1d )