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">