LOG4J2-1415 Avoid calling toString() on auto-boxed primitive message parameters
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/e70e31d8 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/e70e31d8 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/e70e31d8 Branch: refs/heads/LOG4J-1181 Commit: e70e31d8a66c28e07e80342d9c667a5f5b538881 Parents: 2e9fdc1 Author: rpopma <rpo...@apache.org> Authored: Sat Jun 11 01:29:13 2016 +0900 Committer: rpopma <rpo...@apache.org> Committed: Sat Jun 11 01:29:13 2016 +0900 ---------------------------------------------------------------------- .../log4j/message/ParameterFormatter.java | 21 ++++++++++++++++++++ src/changes/changes.xml | 3 +++ 2 files changed, 24 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e70e31d8/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java index 0718cc1..4a2bb65 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java @@ -442,6 +442,27 @@ final class ParameterFormatter { } else if (o instanceof StringBuilderFormattable) { ((StringBuilderFormattable) o).formatTo(str); return true; + } else if (o instanceof Integer) { // LOG4J2-1415 unbox auto-boxed primitives to avoid calling toString() + str.append(((Integer) o).intValue()); + return true; + } else if (o instanceof Long) { + str.append(((Long) o).longValue()); + return true; + } else if (o instanceof Double) { + str.append(((Double) o).doubleValue()); + return true; + } else if (o instanceof Boolean) { + str.append(((Boolean) o).booleanValue()); + return true; + } else if (o instanceof Character) { + str.append(((Character) o).charValue()); + return true; + } else if (o instanceof Short) { + str.append(((Short) o).shortValue()); + return true; + } else if (o instanceof Float) { + str.append(((Float) o).floatValue()); + return true; } return appendDate(o, str); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e70e31d8/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index a576a91..355f6e6 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -24,6 +24,9 @@ </properties> <body> <release version="2.6.2" date="2016-MM-DD" description="GA Release 2.6.2"> + <action issue="LOG4J2-1415" dev="rpopma" type="add"> + (GC) ParameterFormatter now avoids calling toString() on auto-boxed primitive message parameters. + </action> <action issue="LOG4J2-1412" dev="rpopma" type="add"> Unbox utility's ringbuffer of StringBuilders is now configurable. </action>