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`. -