Yes, the reason is that sometimes it takes a while to generate the argument
to log.Debug(). If your code looks something like:
log.Debug(CallReallySlowComponentAndGenerateAMessage());
you would of course benefit from using
if (log.IsDebugEnabled)
log.Debug(CallReallySlowComponentAndGenerateAMessage());
instead, since the time-consuming generation of the message will not occur.
If you only log string literals, I suppose there is no point in using this
construct.
/Göran
-----Original Message-----
From: Tom Nichols [mailto:[EMAIL PROTECTED]
Sent: den 18 november 2005 15:50
To: [email protected]
Subject: Re: Checking IsDebugEnabled before calling Debug()?
Hi,
I was going through the examples and saw this:
// Log a debug message. Test if debug is enabled before
// attempting to log the message. This is not required but
// can make running without logging faster.
if (log.IsDebugEnabled) log.Debug("This is a debug message");
My question is, why not just check this in LogImpl.Debug() , i.e.
virtual public void Debug(object message)
{
if( this.IsDebugEnabled ) Logger.Log(ThisDeclaringType,
m_levelDebug, message, null);
}
And then of course do the same for DebugFormat, Info, Warn, etc. etc.
I haven't dug much into the code but I'm interested in using the
framework. It just seems to me that if you really get a performance
enhancement from testing if IsDebugEnabled before calling it, it would
make more sense to save that step everywhere you make that Debug()
call in paractice.
I'm guessing there's a good reason why, but could someone tell me?
Thanks.
-Tom