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>

Reply via email to