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:13:38 UTC

[logging-log4j2] branch master updated: Ensure EncodingPatternConverter#handlesThrowable is implemented (#473)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 529f7aa  Ensure EncodingPatternConverter#handlesThrowable is implemented (#473)
529f7aa is described below

commit 529f7aa9058931d2d6d87a6767d75fa9304c9525
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Wed Apr 14 11:13:26 2021 +0200

    Ensure EncodingPatternConverter#handlesThrowable is implemented (#473)
---
 .../logging/log4j/core/pattern/EncodingPatternConverter.java |  9 +++++++++
 .../log4j/core/pattern/EncodingPatternConverterTest.java     | 12 ++++++++++++
 2 files changed, 21 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 c1b83c3..eb5f643 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());
+    }
 }