Description
When using Log4j 2 through the SLF4J binding, the Unboxer mecanism is not available and a parameterized message with a primitive type parameter will be auto-boxed.
Then this boxed value will be formatted by ParameterFormatter.recursiveDeepToString() and further allocations will happen
To lower allocation rate for SLF4J users, ParameterFormatter.appendSpecialTypes() should handle boxed primitive types too.
private static boolean appendSpecialTypes(final Object o, final StringBuilder str) { ... } else if (o instanceof Long) { str.append(((Long) o).longValue()); return true; } else if (o instanceof Integer) { str.append(((Integer) o).intValue()); return true; } else if (o instanceof Double) { str.append(((Double) o).doubleValue()); return true; } // similarly for float, short, boolean and char. ... }
Attachments
Issue Links
- relates to
-
LOG4J2-1437 ObjectMessage and ReusableObjectMessage should avoid calling toString() on auto-boxed primitives
- Closed