I follow these rules when I log messages:
- Use isTraceEnabled() for all trace messages.
- If I trace more than once in a variable, I cache isTraceEnabled() in a
local variable.
- Use debug level message for messages that get displayed a constant or
a small number of times (component is starting/stopping) etc.
Since only a small number of debug messages should be produced I don't
guard them with isDebugEnabled().
Just my 2 cents.
Regard,
Hiram
On Wed, 2003-08-13 at 03:00, Jason Dillon wrote:
> In general I agree, trace and debug logs should be guarded.
>
> +1
>
> --jason
>
>
> On Wednesday, August 13, 2003, at 06:01 AM, Mark Mahieu wrote:
>
> > All,
> >
> > I know this is a tad early to comment on the code in CVS, but I've
> > just noticed code like this (in
> > org.apache.geronimo.deployment.scanner.DeploymentScanner)
> >
> > log.debug("Finished scan of " + url + ", " + result.size() + "
> > deployment(s) found");
> >
> > Could everyone make sure that log statements are wrapped (eg.):
> >
> > if (log.isDebugEnabled()) {
> > log.debug("Finished scan of " + url + ", " + result.size() + "
> > deployment(s) found");
> > }
> >
> > The reason being that while profiling a J2EE application a while back
> > we found that well over 50% of the processors' time was spent
> > executing log statements just like the above - most of that with the
> > VM messing around creating StringBuffer objects and then garbage
> > collecting them. In the case above, this will happen regardless of
> > the logging level in use i.e. *even if* debug messages aren't actually
> > being output.
> >
> > A couple of cavaeats:
> > 1) The code above is only executed periodically, so it's not really a
> > great example of a performance killer ;-)
> > 2) Sun's 1.4.2 VM may be better at mitigating this problem than the
> > one I was profiling (1.3.1). Still, not everyone will use Sun's VM.
> >
> > I know this sounds incredibly picky at this stage but I think it'd be
> > an idea to get into good habits now rather than later. If others
> > agree with the above, I'll add it to the coding standards in the Wiki.
> >
> > Mark
> >
--
/**************************
* Hiram Chirino
* Partner
* Core Developers Network
**************************/