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(); + } }