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:26:10 UTC
[logging-log4j2] 01/01: 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
commit d1c67a73d660faca024a1a0a20f9b26ea5c2b5bc
Author: Volkan Yazici <vo...@gmail.com>
AuthorDate: Wed Apr 14 11:25:53 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..215e821 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -66,6 +66,9 @@
Allow a PatternSelector to be specified on GelfLayout.
</action>
<!-- FIXES -->
+ <action issue="LOG4J2-3070" dev="vy" type="fix" due-to="Romain Manni-Bucau">
+ Ensure EncodingPatternConverter#handlesThrowable is implemented.
+ </action>
<action issue="LOG4J2-3054" dev="ckozak" type="fix">
BasicContextSelector hasContext and shutdown take the default context into account
</action>