On Jul 15, 2012, at 7:13 AM, Ralph Goers wrote:

> On Jul 15, 2012, at 6:36 AM, Gary Gregory wrote:
> 
>> Hi All:
>> 
>> I've only now been able to take a peek at v2 in SVN so... sorry for the late 
>> email but I feel better late than never.
>> 
>> With log4j 1.2, my usage pattern is:
>> 
>> logger.debug(String.format("This %s and that %d on this day %1$tm 
>> %1$te,%1$tY", this, this.getThat(), this.getCalendar()));
>> 
>> In 2.0, we have this example:
>> 
>> logger.debug("Logging in user {} with id {}", user.getName(), user.getId());
>> 
>> Why invent a new syntax when String.format is baked into the JRE? 
> 
> Because you are doing the string formatting whether the log event will be 
> logged or not, which means your logger.debug should always be wrapped in an 
> if isDebugEnabled.  Also, the current syntax is compatible with SLF4J. See 
> http://www.slf4j.org/faq.html#logging_performance.
> 
> If you want to write your debug message the way you have shown there is 
> nothing that says you can't. It will still work.  However, as I recall Ceki 
> ran tests that showed the Java text formatting is pretty slow.  See 
> http://bugzilla.slf4j.org/show_bug.cgi?id=116 for a nice discussion on this, 
> and related topics.
> 
> One other point.  The String with placeholders is handled by 
> ParamaterizedMessage.  This class could either be extended or enhanced to 
> support another syntax. If it is extended then that class would have to be 
> used in the logging call such as
> 
>       logger.debug(new FormattedMessage("This %s and that %d on this day 
> %1$tm %1$te,%1$tY", this, this.getThat(), this.getCalendar()));
> 
> The advantage with the above is that, although a FormattedMessage is created 
> every time the logger.debug statement is executed, it will defer the actual 
> message formatting until the event is logged (i.e. the formatting won't 
> happen if debug logging is disabled).

I should note that you wouldn't be able to add a new Class named 
FormattedMessage as there is already an interface with that name.

Ralph

Reply via email to