Github user bjlaub commented on a diff in the pull request:

    https://github.com/apache/logging-log4j2/pull/205#discussion_r208965448
  
    --- Diff: 
log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
 ---
    @@ -355,4 +352,35 @@ public void clear() { // LOG4J2-1583
             messagePattern = null;
             throwable = null;
         }
    +
    +    @Override
    +    public MessageContentFormatter getMessageContentFormatter() {
    +        return formatter;
    +    }
    +
    +    private static final MessageContentFormatter formatter = new 
MessageContentFormatter() {
    +        private final ThreadLocal<int[]> indices = new ThreadLocal<>();
    +
    +        private int computeIndices(String messagePattern) {
    +            int[] result = indices.get();
    +            if (result == null) {
    +                result = new int[256];
    +                indices.set(result);
    +            }
    +            return ReusableParameterizedMessage.count(messagePattern, 
result);
    +        }
    +
    +        @Override
    +        public void formatTo(String formatString, Object[] parameters, int 
parameterCount, StringBuilder buffer) {
    +            int placeholderCount = computeIndices(formatString);
    +            int usedCount = Math.min(placeholderCount, parameterCount);
    +            int[] computedIndices = indices.get();
    --- End diff --
    
    see 
https://github.com/apache/logging-log4j2/pull/208/commits/e015b4aab968a2aa20dc9a40082d98cfe63528cb
 in #208 


---

Reply via email to