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:30 UTC

[logging-log4j2] branch release-2.x updated (487588b -> 0cc96b0)

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

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


    from 487588b  LOG4J2-3289: Fix log4j-to-slf4j re-interpolation of formatted message data
     new 1f0b7b0  Sort methods.
     new 0cc96b0  [LOG4J2-3256] Reduce ignored package scope of KafkaAppender #640.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/appender/mom/kafka/KafkaAppender.java     | 81 +++++++++++++---------
 src/changes/changes.xml                            |  3 +
 2 files changed, 50 insertions(+), 34 deletions(-)

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

Posted by gg...@apache.org.
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">

[logging-log4j2] 01/02: Sort methods.

Posted by gg...@apache.org.
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 1f0b7b06d7a2e610c0a53e415f7d3bd98544ab22
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Dec 26 08:09:55 2021 -0500

    Sort methods.
---
 .../core/appender/mom/kafka/KafkaAppender.java     | 64 +++++++++++-----------
 1 file changed, 32 insertions(+), 32 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 8aa4219..0c9bebc 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
@@ -43,8 +43,6 @@ 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 {
 
-	private final Integer retryCount;
-
 	/**
 	 * Builds KafkaAppender instances.
 	 * 
@@ -79,6 +77,17 @@ public final class KafkaAppender extends AbstractAppender {
 					getPropertyArray(), getRetryCount());
 		}
 
+		public Integer getRetryCount() {
+			Integer intRetryCount = null;
+			try {
+				intRetryCount = Integer.valueOf(retryCount);
+			} catch (NumberFormatException e) {
+
+			}
+			return intRetryCount;
+
+		}
+
 		public String getTopic() {
 			return topic;
 		}
@@ -87,8 +96,8 @@ public final class KafkaAppender extends AbstractAppender {
 			return syncSend;
 		}
 
-		public B setTopic(final String topic) {
-			this.topic = topic;
+		public B setKey(final String key) {
+			this.key = key;
 			return asBuilder();
 		}
 
@@ -97,22 +106,11 @@ public final class KafkaAppender extends AbstractAppender {
 			return asBuilder();
 		}
 
-		public B setKey(final String key) {
-			this.key = key;
+		public B setTopic(final String topic) {
+			this.topic = topic;
 			return asBuilder();
 		}
 
-		public Integer getRetryCount() {
-			Integer intRetryCount = null;
-			try {
-				intRetryCount = Integer.valueOf(retryCount);
-			} catch (NumberFormatException e) {
-
-			}
-			return intRetryCount;
-
-		}
-
 	}
 
 	@Deprecated
@@ -140,6 +138,8 @@ public final class KafkaAppender extends AbstractAppender {
 		return new Builder<B>().asBuilder();
 	}
 
+	private final Integer retryCount;
+
 	private final KafkaManager manager;
 
 	private KafkaAppender(final String name, final Layout<? extends Serializable> layout, final Filter filter,
@@ -176,21 +176,6 @@ public final class KafkaAppender extends AbstractAppender {
 		}
 	}
 
-	private void tryAppend(final LogEvent event) throws ExecutionException, InterruptedException, TimeoutException {
-		final Layout<? extends Serializable> layout = getLayout();
-		byte[] data;
-		if (layout instanceof SerializedLayout) {
-			final byte[] header = layout.getHeader();
-			final byte[] body = layout.toByteArray(event);
-			data = new byte[header.length + body.length];
-			System.arraycopy(header, 0, data, 0, header.length);
-			System.arraycopy(body, 0, data, header.length, body.length);
-		} else {
-			data = layout.toByteArray(event);
-		}
-		manager.send(data);
-	}
-
 	@Override
 	public void start() {
 		super.start();
@@ -210,4 +195,19 @@ public final class KafkaAppender extends AbstractAppender {
 	public String toString() {
 		return "KafkaAppender{" + "name=" + getName() + ", state=" + getState() + ", topic=" + manager.getTopic() + '}';
 	}
+
+	private void tryAppend(final LogEvent event) throws ExecutionException, InterruptedException, TimeoutException {
+		final Layout<? extends Serializable> layout = getLayout();
+		byte[] data;
+		if (layout instanceof SerializedLayout) {
+			final byte[] header = layout.getHeader();
+			final byte[] body = layout.toByteArray(event);
+			data = new byte[header.length + body.length];
+			System.arraycopy(header, 0, data, 0, header.length);
+			System.arraycopy(body, 0, data, header.length, body.length);
+		} else {
+			data = layout.toByteArray(event);
+		}
+		manager.send(data);
+	}
 }