On 21/11/11 04:46, Mike Schilli wrote:
> On Tue, 1 Nov 2011, Martin J. Evans wrote:
>
>> So substituting warn with logwarn does not always warn!
>
> That's an interesting case. The way it's implemented right now is that
> logwarn() will only call warn() (along with other log4perl actions) if
> the log level is greater or equal than WARN.
>
> logdie(), on the other hand, will call die() unconditionally, because
> it's an action, not only a message.
>
> -- -- Mike
So simply substituting warn with logwarn can change the way your program works.
It is not for me to tell you how Log::Log4perl should work but I find this
behaviour unacceptable as my program will behave differently depending on the
log level. Logging should be logging, not changing the way my program runs.
Example:
$ perl -le '$SIG{__WARN__} = sub {CORE::die "Warning:\n", @_, "\n"}; use
Log::Log4perl qw(get_logger); my $lh =
get_logger("BET::Data::Remove");warn("fred"); print "ok";'
Warning:
fred at -e line 1.
Change the warn to logwarn:
$ perl -le '$SIG{__WARN__} = sub {CORE::die "Warning:\n", @_, "\n"}; use
Log::Log4perl qw(get_logger); my $lh =
get_logger("BET::Data::Remove");$lh->logwarn("fred"); print "ok";
ok
Would you consider changing this? If not, I would be most grateful if you could
you point me at the place where I could change this behaviour or tell my how I
could override it.
Martin
>> Hi,
>>
>> Is this really the intended behaviour:
>>
>> perl -w -le 'use strict;use warnings;use Log::Log4perl qw(get_logger); my
>> $lh = get_logger("BET::Data::Remove");
>> $lh->debug("fred");$lh->logwarn("warning from l:l"); warn("warning");'
>>
>> Log4perl: Seems like no initialization happened. Forgot to call init()?
>> warning at -e line 1.
>>
>> i.e., if something does not call init for Log::Log4perl but has a log handle
>> when logwarn is called a warn does not happen?
>>
>
>>
>> I spent some time debugging a problem this morning only to discover this. I
>> find this most worrying as I'd expect the warn to happen whatever. If you
>> substitute logdie for die it seems to work.
>>
>> perl -MLog::Log4perl -le 'print $Log::Log4perl::VERSION;'
>> 1.33
>> This is perl, v5.10.1 (*) built for i686-linux-gnu-thread-multi
>>
>> Martin
>>
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
log4perl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/log4perl-devel