On Tue, 23 Nov 2010, Kevin Goess wrote: > Any opinion on this? Or should we stay with the uninitialized > warning, however unhelpful it is?
I'm in favor of getting a warning in this case, at least with 'use warnings' mode. It's similar to use warnings; print "The value is $value.\n"; where I would expect a warning if $value was undefined. The warning should point me to the location of the actual INFO call and not to somewhere within the guts of Log4perl, though ... :) -- Mike Mike Schilli m...@perlmeister.com > This is kind of annoying thing that I noticed recently, if you do > $logger->info($msg) and $msg is undefined then you get a warning: > > perl -W -Ilib -e 'use Log::Log4perl qw(:easy); > Log::Log4perl->easy_init($INFO); INFO(undef)' > Use of uninitialized value in join or string at lib/Log/Log4perl/Appender.pm > line 167. > > and it's not even a very helpful warning since it's buried in the guts of > Log4perl. > > Using git bisect (neat tool) I found while I (myself even!) had fixed the > issue back in > 029d7df8 in 2002, I broke it (me again!) in afb95ef7e in 2003. > > Anyway, this would be the correct fix for it now, if all we're going to do is > make a > string out of it, it's ok just to use the defined bits of the mssage. > ... > > diff --git a/lib/Log/Log4perl/Appender.pm b/lib/Log/Log4perl/Appender.pm > index 923836f..455fd09 100644 > --- a/lib/Log/Log4perl/Appender.pm > +++ b/lib/Log/Log4perl/Appender.pm > @@ -162,10 +162,13 @@ sub log { > #not defined, the normal case > if (! defined $self->{warp_message} ){ > #join any message elements > - $p->{message} = > - join($Log::Log4perl::JOIN_MSG_ARRAY_CHAR, > - @{$p->{message}} > - ) if ref $p->{message} eq "ARRAY"; > + if (ref $p->{message} eq "ARRAY"){ > + $p->{message} = > + join($Log::Log4perl::JOIN_MSG_ARRAY_CHAR, > + grep { defined $_ } > + @{$p->{message}} > + ); > + } > > #defined but false, e.g. Appender::DBI > } elsif (! $self->{warp_message}) { > > > If nobody objects I can make a unit test for it as well and push it to Mike > via github. > > > > -- > Kevin G. > > ------------------------------------------------------------------------------ > Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! > Tap into the largest installed PC base & get more eyes on your game by > optimizing for Intel(R) Graphics Technology. Get started today with the > Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. > http://p.sf.net/sfu/intelisp-dev2dev > _______________________________________________ > log4perl-devel mailing list > log4perl-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/log4perl-devel > ------------------------------------------------------------------------------ Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! Tap into the largest installed PC base & get more eyes on your game by optimizing for Intel(R) Graphics Technology. Get started today with the Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. http://p.sf.net/sfu/intelisp-dev2dev _______________________________________________ log4perl-devel mailing list log4perl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/log4perl-devel