You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2021/04/14 09:24:43 UTC

[logging-log4j2] branch release-2.x updated: LOG4J2-3070 Ensure EncodingPatternConverter#handlesThrowable is implemented. (#473)

This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 5cd5988  LOG4J2-3070 Ensure EncodingPatternConverter#handlesThrowable is implemented. (#473)
5cd5988 is described below

commit 5cd5988ab86f9325591ebfdc52ff05255c19aec5
Author: Volkan Yazici <vo...@gmail.com>
AuthorDate: Wed Apr 14 11:24:29 2021 +0200

    LOG4J2-3070 Ensure EncodingPatternConverter#handlesThrowable is implemented. (#473)
---
 .../logging/log4j/core/pattern/EncodingPatternConverter.java |  9 +++++++++
 .../log4j/core/pattern/EncodingPatternConverterTest.java     | 12 ++++++++++++
 src/changes/changes.xml                                      |  3 +++
 3 files changed, 24 insertions(+)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
index 941ecca..65ac439 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java
@@ -17,6 +17,8 @@
 package org.apache.logging.log4j.core.pattern;
 
 import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Stream;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -51,6 +53,13 @@ public final class EncodingPatternConverter extends LogEventPatternConverter {
         this.escapeFormat = escapeFormat;
     }
 
+    @Override
+    public boolean handlesThrowable() {
+        return formatters != null && formatters.stream()
+                .map(PatternFormatter::getConverter)
+                .anyMatch(LogEventPatternConverter::handlesThrowable);
+    }
+
     /**
      * Creates an EncodingPatternConverter using a pattern string and an optional escape format.
      *
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
index 851c5ba..e996241 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/EncodingPatternConverterTest.java
@@ -19,6 +19,8 @@ package org.apache.logging.log4j.core.pattern;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.DefaultConfiguration;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.junit.jupiter.api.Test;
@@ -103,4 +105,14 @@ public class EncodingPatternConverterTest {
             sb.toString());
     }
 
+    @Test
+    public void testHandlesThrowable() {
+        final Configuration configuration = new DefaultConfiguration();
+        assertFalse(EncodingPatternConverter.newInstance(configuration, new String[]{"%msg", "XML"})
+            .handlesThrowable());
+        assertTrue(EncodingPatternConverter.newInstance(configuration, new String[]{"%xThrowable{full}", "JSON"})
+            .handlesThrowable());
+        assertTrue(EncodingPatternConverter.newInstance(configuration, new String[]{"%ex", "XML"})
+            .handlesThrowable());
+    }
 }
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 63d47f0..0bc08f1 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -94,6 +94,9 @@
     </release>
     <release version="2.14.1" date="2021-03-06" description="GA Release 2.14.1">
       <!-- FIXES -->
+      <action issue="LOG4J2-3070" dev="vy" type="fix" due-to="Romain Manni-Bucau">
+        Ensure EncodingPatternConverter#handlesThrowable is implemented.
+      </action>
       <action issue="LOG4J2-3033" dev="rgoers" type="fix">
         Add log method with no parameters - i.e. it has an empty message.
       </action>