summaryrefslogtreecommitdiff
path: root/t/063LoggerRemove.t
diff options
context:
space:
mode:
Diffstat (limited to 't/063LoggerRemove.t')
-rwxr-xr-xt/063LoggerRemove.t56
1 files changed, 56 insertions, 0 deletions
diff --git a/t/063LoggerRemove.t b/t/063LoggerRemove.t
new file mode 100755
index 0000000..508f08a
--- /dev/null
+++ b/t/063LoggerRemove.t
@@ -0,0 +1,56 @@
+# 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");