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

Richard Wheeldon commented on LBCLASSIC-281:
--------------------------------------------

This is affecting a proposed new Appender we want to create as well - one which 
stores logging events then processes them only on certain conditions. It looks 
like the fix for LBCLASSIC-47 was either incomplete or subsequently reverted. 
Either way, it looks like it can be fixed by simply removing the two lines:
{code}
    FormattingTuple ft = MessageFormatter.arrayFormat(message, argArray);
    formattedMessage = ft.getMessage();
{code}
from the constructor.


> 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://mailman.qos.ch/mailman/listinfo/logback-dev

Reply via email to