From: Mike S. <m...@pe...> - 2007-03-17 07:02:12
|
On Thu, 15 Mar 2007, Daniel Lo wrote: > I was using log4perl, when I discovered that a small mistake I had made > did not generate any error message. I had made a mistake in the directory > naming. I found that log4perl will not express an warning or error, when a > package is declared that does not exist and there are other > categories to choose from. Hi Daniel, thanks for reporting this issue! Actually, the error is in the line log4perl.opps = DEBUG, NoExist which probably was meant to be log4perl.logger.opps = DEBUG, NoExist in which case the error with the non-existing appender class would have been reported. The way the configuration was coded, log4perl.opps = DEBUG, NoExist it defined an undefined (but maybe future :) keyword 'opps' which was ignored by Log4perl. The Appender definition # Non Existant Appender log4perl.appender.NoExist = Log::Log4perl::Appender::NoExist log4perl.appender.NoExist.layout = PatternLayout log4perl.appender.NoExist.layout.ConversionPattern = %m%n ); also was ignored because no logger was actually using it. Some day we're gonna rework the PropertyConfigurator to insist on a fixed set of keywords, make sure that there are no dangling parts and add better sanity checks. Really :) -- Mike Mike Schilli m...@pe... > > > Below is a test script that expresses this problem. > > > > Thank you for your time, > > > -daniel > > ----------------------------------------------------------------------- > > use warnings; > use strict; > > use Log::Log4perl qw(get_logger); > use Test::More tests => 2; > > # appender NoExist does not exist, and should generate some sort of error > # message > my $conf = qq( > log4perl.rootLogger = DEBUG, buffer > log4perl.opps = DEBUG, NoExist > > # Regular Screen Appender > log4perl.appender.buffer = Log::Log4perl::Appender::TestBuffer > log4perl.appender.buffer.layout = PatternLayout > log4perl.appender.buffer.layout.ConversionPattern = %m%n > > # Non Existant Appender > log4perl.appender.NoExist = Log::Log4perl::Appender::NoExist > log4perl.appender.NoExist.layout = PatternLayout > log4perl.appender.NoExist.layout.ConversionPattern = %m%n > ); > > eval { > Log::Log4perl->init(\$conf); > }; > ok(length($@) > 0, "This should contain an error message: $@"); > > # no error message from: Log::Log4perl::Appender::NoExist > diag("\$@=$@\n"); > > my $badLogger = get_logger('opps'); > $badLogger->info('How can you log to an non-existant package?'); > > my $buffer = Log::Log4perl::Appender::TestBuffer->by_name('buffer'); > > is ($buffer->buffer,"","buffer is empty!"); > diag("buffer contains: " . $buffer->buffer); > > > |