This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit a7293d80a3a6a4f22f12cad05a024a2e46386061 Author: Lucas Souza <[email protected]> AuthorDate: Fri Mar 17 23:49:11 2023 -0300 Issue #1366 - Fixed logging of java.sql.Date --- .../apache/logging/log4j/util/StringBuilders.java | 33 ++++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java index d0c931d039..cc81a66105 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java @@ -16,8 +16,6 @@ */ package org.apache.logging.log4j.util; -import java.lang.reflect.Array; -import java.util.Collections; import java.util.Map.Entry; import static java.lang.Character.toLowerCase; @@ -28,18 +26,28 @@ import static java.lang.Character.toLowerCase; @InternalApi public final class StringBuilders { - private static final Object timeClass; + private static final Object timeObj; + private static final Object dateObj; static { + Class<?> clazz; Object obj; + final long current = System.currentTimeMillis(); try { - Class<?> clazz = Class.forName("java.sql.Time"); - long current = System.currentTimeMillis(); + clazz = Class.forName("java.sql.Time"); obj = clazz.getDeclaredConstructor(Long.TYPE).newInstance(current); } catch(Exception ex) { obj = null; } - timeClass = obj; + timeObj = obj; + + try { + clazz = Class.forName("java.sql.Date"); + obj = clazz.getDeclaredConstructor(Long.TYPE).newInstance(current); + } catch(Exception ex) { + obj = null; + } + dateObj = obj; } private StringBuilders() { @@ -135,7 +143,7 @@ public final class StringBuilders { stringBuilder.append(((Float) obj).floatValue()); } else if (obj instanceof Byte) { stringBuilder.append(((Byte) obj).byteValue()); - } else if (isTime(obj) || obj instanceof java.time.temporal.Temporal) { + } else if (isTime(obj) || isDate(obj) || obj instanceof java.time.temporal.Temporal) { stringBuilder.append(obj); } else { return false; @@ -144,10 +152,17 @@ public final class StringBuilders { } /* - Check to see if obj is an instance of java.sql.time without requiring the java.sql module. + Check to see if obj is an instance of java.sql.Time without requiring the java.sql module. */ private static boolean isTime(final Object obj) { - return obj.getClass().isInstance(timeClass); + return obj.getClass().isInstance(timeObj); + } + + /* + Check to see if obj is an instance of java.sql.Date without requiring the java.sql module. + */ + private static boolean isDate(final Object obj) { + return obj.getClass().isInstance(dateObj); } /**
