[infinispan-dev] trace vs log.isTraceEnabled

Mircea Markus mircea.markus at jboss.com
Thu Sep 29 12:26:43 EDT 2011


Thanks David - this is a very welcomed clarification, as current lock guarding is inconsistent and not very nice.
I've created a JIRA[1] in order to update the code and document a policy on this issue.

[1] - ISPN-1429 remove lock guards(if trace.isTraceEnbled() .. ) where possible

On 28 Sep 2011, at 17:41, David M. Lloyd wrote:

> On 09/28/2011 11:35 AM, Mircea Markus wrote:
>> Hi,
>> 
>> I'm not aware of any convention on using trace vs log.isTraceEnabled() to guard the trace statements.
>> 
>> if (trace) log.trace("some request related stuff")
>> vs
>> if (log.isTraceEnabled()) log.trace("some request related stuff");
>> 
>> The former is more efficient, but cannot be managed at runtime. It seems to be the preferred form, so shall we stick with it?
> 
> If you're using the jboss-logging API, and your log statement does not 
> do any interpolation, then it is just as fast to do any of the following 
> (with no if):
> 
>    log.trace("blah");
>    log.tracef("the %s happened to %s", foo, bar);
>    log.tracev("the {0} happened to {1}", foo, bar);
> 
> In the case where trace logging is disabled, these are exactly as 
> efficient as the if (log.isTraceEnabled()) variants.  In the case where 
> it is enabled, it is marginally more efficient (though the trace log 
> itself is substantially more expensive of course).
> 
> Overall I'd avoid the "if" forms unless you're doing complex interpolation:
> 
>    log.trace("Foo " + bar + " baz " + zap);
>    log.tracef("the %s happened to %s", fooMethod().barMethod(), bar);
> 
> ...both of which incur the expense of the expression resolution even if 
> the log message is ultimately discarded.
> -- 
> - DML
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev




More information about the infinispan-dev mailing list