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
---