From ea640be6eab51160dd13653424fc29acec6a299a Mon Sep 17 00:00:00 2001
From: eldwrjwt <39670005+eldwrjwt@users.noreply.github.com>
Date: Mon, 6 Jan 2025 20:18:29 +0800
Subject: [PATCH 1/2] Support `AsyncAppender::requiresLocation`
This is a port of https://github.com/apache/logging-log4j2/pull/3260 to
3.x. This addresses #3257.
---
.../core/appender/AsyncAppenderTest.java | 7 ++++
.../test/resources/log4j-asynch-location.xml | 35 +++++++++++++++++++
.../log4j/core/appender/AsyncAppender.java | 5 +++
.../AsyncAppenderEventDispatcher.java | 9 +++++
...257_fix_AsyncAppender_requiresLocation.xml | 8 +++++
5 files changed, 64 insertions(+)
create mode 100644 log4j-core-test/src/test/resources/log4j-asynch-location.xml
create mode 100644 src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java
index 9631d9a2e0f..9bb371eb6c2 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java
@@ -151,4 +151,11 @@ public void testShutdownTimeout(final LoggerContext context) {
context.getLogger("Logger").info("This is a test");
context.stop();
}
+
+ @Test
+ @LoggerContextSource("log4j-asynch-location.xml")
+ public void testRequiresLocation(final LoggerContext context) {
+ final AsyncAppender appender = context.getConfiguration().getAppender("Async");
+ assertTrue(appender.requiresLocation());
+ }
}
diff --git a/log4j-core-test/src/test/resources/log4j-asynch-location.xml b/log4j-core-test/src/test/resources/log4j-asynch-location.xml
new file mode 100644
index 00000000000..9da5c4702ff
--- /dev/null
+++ b/log4j-core-test/src/test/resources/log4j-asynch-location.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
index d55897a50a8..ec7b8b9ee95 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
@@ -427,4 +427,9 @@ public int getQueueRemainingCapacity() {
public int getQueueSize() {
return queue.size();
}
+
+ @Override
+ public boolean requiresLocation() {
+ return includeLocation && dispatcher.requiresLocation();
+ }
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppenderEventDispatcher.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppenderEventDispatcher.java
index b597e1d0c4a..1dd00446f41 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppenderEventDispatcher.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppenderEventDispatcher.java
@@ -167,4 +167,13 @@ void stop(final long timeoutMillis) throws InterruptedException {
// Wait for the completion.
join(timeoutMillis);
}
+
+ boolean requiresLocation() {
+ for (var appender : appenders) {
+ if (appender.getAppender().requiresLocation()) {
+ return true;
+ }
+ }
+ return errorAppender != null && errorAppender.getAppender().requiresLocation();
+ }
}
diff --git a/src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml b/src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml
new file mode 100644
index 00000000000..3a885002a7c
--- /dev/null
+++ b/src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml
@@ -0,0 +1,8 @@
+
+
+
+ Fix detection of location requirements in `AsyncAppender`.
+
From 29fdaf9f3892f7be51c0fa73674c55c281c692c8 Mon Sep 17 00:00:00 2001
From: Matt Sicker
Date: Thu, 31 Jul 2025 14:07:17 -0500
Subject: [PATCH 2/2] Remove unneeded file
---
.../.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml | 8 --------
1 file changed, 8 deletions(-)
delete mode 100644 src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml
diff --git a/src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml b/src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml
deleted file mode 100644
index 3a885002a7c..00000000000
--- a/src/changelog/.3.x.x/3257_fix_AsyncAppender_requiresLocation.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- Fix detection of location requirements in `AsyncAppender`.
-