[ 
https://issues.apache.org/jira/browse/LOG4J2-1271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15149599#comment-15149599
 ] 

Ralph Goers commented on LOG4J2-1271:
-------------------------------------

I believe the first 2 bullets are being done to avoid the objects being 
modified after the logging call from affecting asynchronous logging.

I am strongly opposed to the third bullet as that means the overhead of 
formatting the message will be incurred even if the Message isn't logged. 
Although it may be uncommon, users are free to create a ParameterizedMessage 
and then log it. Messages should never be formatted until it is determined they 
are going to be used.

> ParameterizedMessage optimization
> ---------------------------------
>
>                 Key: LOG4J2-1271
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1271
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: API
>    Affects Versions: 2.5
>            Reporter: Remko Popma
>            Assignee: Remko Popma
>
> ParameterizedMessage creates unnecessary objects and does other unnecessary 
> work in its constructor.
> On the other hand, it does not create the full formatted string it will 
> eventually need to return from {{getFormattedMessage()}}.
> I propose the following changes:
> * Don't call {{argumentsToStrings}} in the constructor. Converting the 
> parameter Object[] array to a String[] array should only be done when 
> necessary: when this ParameterizedMessage is serialized.
> * Don't copy the parameter Object[] array to a new array. Instead clone the 
> array when the {{getParameters()}} method is called.
> * In the constructor, build the fully formatted message. This combines the 
> work done by {{formatStringArgs(String, String[])}} and 
> {{argumentsToStrings(Object[])}} and avoids the issue mentioned in LOG4J2-763.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to