[ 
http://jira.qos.ch/browse/LBCLASSIC-281?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12059#action_12059
 ] 

Andrew Brett commented on LBCLASSIC-281:
----------------------------------------

Sorry for the inexact terminology above, when I say "custom formatter", I mean 
a class which implements ch.qos.logback.core.pattern.Converter, and is used as 
an alternative to ch.qos.logback.classic.pattern.MessageConverter - it doesn't 
simply return the formattedMessage, but instead looks at the types of objects 
in the argArray, and is able to call things other than toString() on those 
objects in certain cases.

> Don't evaluate formattedMessage in LoggingEvent constructor
> -----------------------------------------------------------
>
>                 Key: LBCLASSIC-281
>                 URL: http://jira.qos.ch/browse/LBCLASSIC-281
>             Project: logback-classic
>          Issue Type: Improvement
>    Affects Versions: 0.9.29
>            Reporter: Andrew Brett
>            Assignee: Logback dev list
>
> Whenever a ch.qos.logback.classic.spi.LoggingEvent is constructed, 
> MessageFormatter.arrayFormat(...) is called, and the formattedMessage member 
> variable assigned. This involves calling toString() on all arguments in 
> argArray, which can be slow, and occurs even if the formattedMessage is not 
> part of any appender layouts.
> For my project's purposes, I have a custom formatter which only outputs an 
> abbreviated string form of certain objects with expensive toString() methods; 
> however, I am still paying the overhead in the toString() calls, since 
> they're made even when getFormattedMessage() is never called. Note that I 
> don't control the source of the objects with expensive toString() methods, 
> nor do I control the source everywhere they're logged, so I can't simply 
> change them directly.
> formattedMessage is already evaluated lazily in getFormattedMessage(), so the 
> only side effect of this change is the introspection of argsArray to look for 
> a Throwable at the end, which is a trivial operation to perform separately.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev

Reply via email to