# http://stackoverflow.com/questions/5914088 and
# https://github.com/mschilli/log4perl/issues/7
use strict;
use Test::More;
use Log::Log4perl::Appender::TestBuffer;
plan tests => 6;
use Log::Log4perl qw(get_logger :easy);
# $Log::Log4perl::CHATTY_DESTROY_METHODS = 1;
my $conf = q(
log4perl.category.main = WARN, LogBuffer
log4perl.category.Bar.Twix = WARN, LogBuffer
log4perl.appender.LogBuffer = Log::Log4perl::Appender::TestBuffer
log4perl.appender.LogBuffer.layout = \
Log::Log4perl::Layout::PatternLayout
log4perl.appender.LogBuffer.layout.ConversionPattern = %d %F{1} %L> %m %n
);
Log::Log4perl::init(\$conf);
my $buffer = Log::Log4perl::Appender::TestBuffer->by_name("LogBuffer");
my $logger = get_logger("Bar::Twix");
ok(exists $Log::Log4perl::Logger::LOGGERS_BY_NAME->{"Bar.Twix"},
"logger exists");
Log::Log4perl->remove_logger( $logger );
undef $logger;
ok(!exists $Log::Log4perl::Logger::LOGGERS_BY_NAME->{"Bar.Twix"},
"logger gone");
# now remove a stealth logger
$logger = get_logger("main");
ok(exists $Log::Log4perl::Logger::LOGGERS_BY_NAME->{"main"},
"logger exists");
WARN "before";
Log::Log4perl->remove_logger( $logger );
undef $logger;
ok(!exists $Log::Log4perl::Logger::LOGGERS_BY_NAME->{"main"},
"logger gone");
# this should be a no-op now.
WARN "after";
like($buffer->buffer, qr/before/, "log message before logger removal present");
unlike($buffer->buffer, qr/after/, "log message after logger removal absent");