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