You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2021/12/26 13:30:32 UTC

[logging-log4j2] 02/02: [LOG4J2-3256] Reduce ignored package scope of KafkaAppender #640.

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

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

commit 0cc96b0d65ac589dc90908bc0d4805ee7ad26f1d
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Dec 26 08:30:21 2021 -0500

    [LOG4J2-3256] Reduce ignored package scope of KafkaAppender #640.
    
    Modified GitHub patch #640 from Lee
    Dongjin/dongjinleekr/dongjin@apache.org.
---
 .../log4j/core/appender/mom/kafka/KafkaAppender.java    | 17 +++++++++++++++--
 src/changes/changes.xml                                 |  3 +++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
index 0c9bebc..d925d5c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
@@ -22,6 +22,7 @@ import java.util.Objects;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.stream.Stream;
 
 import org.apache.logging.log4j.core.AbstractLifeCycle;
 import org.apache.logging.log4j.core.Appender;
@@ -43,7 +44,7 @@ import org.apache.logging.log4j.core.layout.SerializedLayout;
 @Plugin(name = "Kafka", category = Node.CATEGORY, elementType = Appender.ELEMENT_TYPE, printObject = true)
 public final class KafkaAppender extends AbstractAppender {
 
-	/**
+    /**
 	 * Builds KafkaAppender instances.
 	 * 
 	 * @param <B> The type to build
@@ -113,6 +114,8 @@ public final class KafkaAppender extends AbstractAppender {
 
 	}
 
+    private static final String[] KAFKA_CLIENT_PACKAGES = new String[] { "org.apache.kafka.common", "org.apache.kafka.clients" };
+
 	@Deprecated
 	public static KafkaAppender createAppender(final Layout<? extends Serializable> layout, final Filter filter,
 			final String name, final boolean ignoreExceptions, final String topic, final Property[] properties,
@@ -129,6 +132,16 @@ public final class KafkaAppender extends AbstractAppender {
 	}
 
 	/**
+	 * Tests if the given log event is from a Kafka Producer implementation.
+	 *
+	 * @param event The event to test.
+	 * @return true to avoid recursion and skip logging, false to log.
+	 */
+	private static boolean isRecursive(final LogEvent event) {
+	    return Stream.of(KAFKA_CLIENT_PACKAGES).anyMatch(prefix -> event.getLoggerName().startsWith(prefix));
+    }
+
+	/**
 	 * Creates a builder for a KafkaAppender.
 	 * 
 	 * @return a builder for a KafkaAppender.
@@ -152,7 +165,7 @@ public final class KafkaAppender extends AbstractAppender {
 
 	@Override
 	public void append(final LogEvent event) {
-		if (event.getLoggerName() != null && event.getLoggerName().startsWith("org.apache.kafka")) {
+		if (event.getLoggerName() != null && isRecursive(event)) {
 			LOGGER.warn("Recursive logging from [{}] for appender [{}].", event.getLoggerName(), getName());
 		} else {
 			try {
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8255faa..4c96396 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -55,6 +55,9 @@
       <action issue="LOG4J2-3270" dev="ckozak" type="fix">
         Lookups with no prefix only read values from the configuration properties as expected.
       </action>
+      <action issue="LOG4J2-3270" dev="ggregory" type="fix" due-to="Lee Dongjin">
+        Reduce ignored package scope of KafkaAppender.
+      </action>
     </release>
     <release version="2.17.0" date="2021-12-17" description="GA Release 2.17.0">
       <action issue="LOG4J2-3230" dev="ckozak" type="fix">