You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2024/01/24 19:56:24 UTC
(logging-log4j2) 02/02: Move async logger tests to `log4j-async-logger`
This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch move-async
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 0c553cf73cae162baf59562697c35081e6ddca6f
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Tue Jan 23 15:57:47 2024 +0100
Move async logger tests to `log4j-async-logger`
We move all the tests using `AsyncLogger` and `AsyncLoggerConfig` from
`log4j-core-test` to a new artifact `log4j-async-logger` in preparation
for splitting async support out of `log4j-core`.
---
log4j-async-logger/pom.xml | 68 ++++++++++++++++++++++
.../async/AsyncLoggerClassLoadDeadlockTest.java | 29 ++++++---
.../log4j/core/async/AsyncLoggerConfig2Test.java | 26 +++++----
.../log4j/core/async/AsyncLoggerConfig3Test.java | 11 ++--
.../log4j/core/async/AsyncLoggerConfig4Test.java | 0
.../core/async/AsyncLoggerConfigAutoFlushTest.java | 25 ++++----
.../core/async/AsyncLoggerConfigErrorOnFormat.java | 13 +++--
.../log4j/core/async/AsyncLoggerConfigTest.java | 0
.../AsyncLoggerConfigUseAfterShutdownTest.java | 22 +++----
.../AsyncLoggerConfigWithAsyncEnabledTest.java | 0
...AsyncLoggerContextSelectorInitialStateTest.java | 0
.../core/async/AsyncLoggerContextSelectorTest.java | 0
.../log4j/core/async/AsyncLoggerContextTest.java | 0
.../AsyncLoggerCustomSelectorLocationTest.java | 34 ++++-------
.../core/async/AsyncLoggerDefaultLocationTest.java | 9 +--
.../AsyncLoggerEventTranslationExceptionTest.java | 12 ++--
.../log4j/core/async/AsyncLoggerLocationTest.java | 23 ++++----
.../log4j/core/async/AsyncLoggerNanoTimeTest.java | 2 +-
.../logging/log4j/core/async/AsyncLoggerTest.java | 22 +++----
.../AsyncLoggerTestArgumentFreedOnErrorTest.java | 1 -
.../core/async/AsyncLoggerThreadContextTest.java | 15 ++---
.../async/AsyncLoggerTimestampMessageTest.java | 2 +-
.../async/AsyncLoggerUseAfterShutdownTest.java | 23 ++++----
.../async/AsyncLoggersWithAsyncAppenderTest.java | 0
.../AsyncLoggersWithAsyncLoggerConfigTest.java | 2 +-
.../async/AsyncQueueFullPolicyFactoryTest.java | 0
.../log4j/core/async/AsyncRootReloadTest.java | 19 +++---
.../log4j/core/async/AsyncThreadContextTest.java | 18 ++++--
.../async/BasicAsyncLoggerContextSelectorTest.java | 0
.../async/DisruptorConfigurationInvalidTest.java | 0
.../core/async/DisruptorConfigurationTest.java | 0
.../async/GarbageFreeAsyncThreadContextTest.java | 0
.../log4j/core/async/Log4j2Jira1688AsyncTest.java | 2 +-
.../core/async/QueueFullAsyncLogger2Test.java | 2 +-
.../core/async/QueueFullAsyncLogger3Test.java | 3 +-
.../async/QueueFullAsyncLoggerConfig2Test.java | 2 +-
...lAsyncLoggerConfigLoggingFromToString2Test.java | 2 +-
...llAsyncLoggerConfigLoggingFromToStringTest.java | 1 +
.../core/async/QueueFullAsyncLoggerConfigTest.java | 1 +
...ueueFullAsyncLoggerLoggingFromToStringTest.java | 1 +
.../log4j/core/async/QueueFullAsyncLoggerTest.java | 1 +
.../log4j/core/async/RingBufferLogEventTest.java | 0
...AsyncWaitStrategyIncorrectFactoryConfigTest.xml | 0
.../async/AsyncLoggerClassLoadDeadlockTest.xml | 0
.../log4j/core/async/AsyncLoggerConfig2Test.xml | 2 +-
.../log4j/core/async/AsyncLoggerConfig3Test.xml | 2 +-
.../log4j/core/async/AsyncLoggerConfig4Test.xml | 0
.../core/async}/AsyncLoggerConfigAutoFlushTest.xml | 2 +-
.../core/async}/AsyncLoggerConfigErrorOnFormat.xml | 2 +-
.../log4j/core/async/AsyncLoggerConfigTest.xml | 0
.../AsyncLoggerConfigUseAfterShutdownTest.xml | 0
.../AsyncLoggerConfigWithAsyncEnabledTest.xml | 0
.../AsyncLoggerCustomSelectorLocationTest.xml | 2 +-
.../core/async}/AsyncLoggerDefaultLocationTest.xml | 0
.../AsyncLoggerEventTranslationExceptionTest.xml | 12 ++--
.../log4j/core/async}/AsyncLoggerLocationTest.xml | 2 +-
.../log4j/core/async/AsyncLoggerNanoTimeTest.xml | 4 +-
.../logging/log4j/core/async}/AsyncLoggerTest.xml | 2 +-
.../AsyncLoggerTestArgumentFreedOnErrorTest.xml | 12 ++--
.../core/async}/AsyncLoggerThreadContextTest.xml | 0
.../async}/AsyncLoggerTimestampMessageTest.xml | 0
.../core/async/AsyncLoggerUseAfterShutdownTest.xml | 0
.../async/AsyncLoggersWithAsyncAppenderTest.xml | 0
.../AsyncLoggersWithAsyncLoggerConfigTest.xml | 0
.../log4j/core/async/AsyncRootReloadTest.xml | 0
.../async/AsyncThreadContextTest/ALL_ASYNC.xml | 0
.../BOTH_ALL_ASYNC_AND_MIXED.xml | 0
.../core/async/AsyncThreadContextTest/MIXED.xml | 0
.../async/DisruptorConfigurationInvalidTest.xml | 0
.../core/async/DisruptorConfigurationTest.xml | 0
.../log4j/core/async/Log4j2Jira1688AsyncTest.xml | 9 ++-
...ullAsyncLoggerConfigLoggingFromToStringTest.xml | 0
.../core/async/QueueFullAsyncLoggerConfigTest.xml | 0
.../log4j/core/GarbageCollectionHelper.java | 3 +-
.../log4j/core/ThreadContextTestAccess.java | 0
.../log4j/core/async/QueueFullAbstractTest.java | 1 +
.../log4j/core/test}/TestPatternConverters.java | 3 +-
.../log4j/core/test}/async/BlockingAppender.java | 2 +-
.../log4j/core/test/async/package-info.java | 22 +++++++
.../log4j/core/async/QueueFullAbstractTest.xml | 0
.../core/async/AsyncLoggerClassLoadDeadlock.java | 32 ----------
.../core/async/QueueFullAsyncAppenderTest.java | 1 +
pom.xml | 7 +++
83 files changed, 299 insertions(+), 214 deletions(-)
diff --git a/log4j-async-logger/pom.xml b/log4j-async-logger/pom.xml
new file mode 100644
index 0000000000..5d37d3d80f
--- /dev/null
+++ b/log4j-async-logger/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to you under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${revision}</version>
+ <relativePath>../log4j-parent</relativePath>
+ </parent>
+
+ <artifactId>log4j-async-logger</artifactId>
+ <name>Log4j Async Logger</name>
+ <description>Alternative implementation of logger that uses LMAX Disruptor.</description>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.lmax</groupId>
+ <artifactId>disruptor</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+</project>
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.java
similarity index 60%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.java
index c015520406..4836bbbfbd 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.java
@@ -18,21 +18,24 @@ package org.apache.logging.log4j.core.async;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.test.junit.SetTestProperty;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
-import org.junitpioneer.jupiter.SetSystemProperty;
/**
* Test class loading deadlock condition from the LOG4J2-1457
*/
@Tag("async")
-@SetSystemProperty(
- key = Log4jPropertyKey.Constant.CONTEXT_SELECTOR_CLASS_NAME,
+@SetTestProperty(
+ key = "LoggerContext.selector",
value = "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.ASYNC_LOGGER_RING_BUFFER_SIZE, value = "128")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerConsoleTest.xml")
+@SetTestProperty(key = "AsyncLogger.ringBufferSize", value = "128")
+@SetTestProperty(
+ key = "Configuration.file",
+ value = "org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.xml")
public class AsyncLoggerClassLoadDeadlockTest {
static final int RING_BUFFER_SIZE = 128;
@@ -41,7 +44,19 @@ public class AsyncLoggerClassLoadDeadlockTest {
@Timeout(value = 30)
public void testClassLoaderDeadlock() throws Exception {
// touch the class so static init will be called
- final AsyncLoggerClassLoadDeadlock temp = new AsyncLoggerClassLoadDeadlock();
+ final DeadLock temp = new DeadLock();
assertNotNull(temp);
}
+
+ static final class DeadLock {
+ static {
+ final Logger log = LogManager.getLogger("com.foo.bar.deadlock");
+ final Exception e = new Exception();
+ // the key to reproducing the problem is to fill up the ring buffer so that
+ // log.info call will block on ring buffer as well
+ for (int i = 0; i < AsyncLoggerClassLoadDeadlockTest.RING_BUFFER_SIZE * 2; ++i) {
+ log.info("clinit", e);
+ }
+ }
+ }
}
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest2.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig2Test.java
similarity index 70%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest2.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig2Test.java
index 3c92d26b1d..a36c756959 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest2.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig2Test.java
@@ -22,35 +22,37 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
-import org.apache.logging.log4j.LogManager;
+import java.nio.file.Path;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
+import org.apache.logging.log4j.test.junit.UsingStatusListener;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerConfigTest2.xml")
-public class AsyncLoggerConfigTest2 {
+@UsingStatusListener
+public class AsyncLoggerConfig2Test {
+
+ @TempLoggingDir
+ private static Path loggingPath;
@Test
- public void testConsecutiveReconfigure() throws Exception {
- final File file = new File("target", "AsyncLoggerConfigTest2.log");
- assertTrue(!file.exists() || file.delete(), "Deleted old file before test");
+ @LoggerContextSource
+ public void testConsecutiveReconfigure(final LoggerContext ctx) throws Exception {
+ final File file = loggingPath.resolve("AsyncLoggerConfigTest2.log").toFile();
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ final Logger log = ctx.getLogger("com.foo.Bar");
final String msg = "Message before reconfig";
log.info(msg);
- final LoggerContext ctx = LoggerContext.getContext(false);
ctx.reconfigure();
ctx.reconfigure();
final String msg2 = "Message after reconfig";
log.info(msg2);
- CoreLoggerContexts.stopLoggerContext(file); // stop async thread
+ ctx.stop(); // stop async thread
final BufferedReader reader = new BufferedReader(new FileReader(file));
final String line1 = reader.readLine();
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest3.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig3Test.java
similarity index 92%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest3.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig3Test.java
index 39b26a518c..f46c75b61f 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest3.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig3Test.java
@@ -16,6 +16,7 @@
*/
package org.apache.logging.log4j.core.async;
+import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import org.apache.logging.log4j.Level;
@@ -24,17 +25,19 @@ import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.ParameterizedMessage;
-import org.apache.logging.log4j.test.junit.CleanUpFiles;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@Tag("async")
@Tag("sleepy")
-public class AsyncLoggerConfigTest3 {
+public class AsyncLoggerConfig3Test {
+
+ @TempLoggingDir
+ private static Path loggingPath;
@Test
- @CleanUpFiles("target/AsyncLoggerConfigTest2.log")
- @LoggerContextSource("AsyncLoggerConfigTest2.xml")
+ @LoggerContextSource
public void testNoConcurrentModificationException(final Logger log) throws Exception {
log.info("initial message");
Thread.sleep(500);
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.java
similarity index 62%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.java
index b022853d64..12b745207a 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.java
@@ -20,29 +20,30 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.nio.file.Files;
-import org.apache.logging.log4j.LogManager;
+import java.nio.file.Path;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
-import org.apache.logging.log4j.test.junit.CleanUpFiles;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerConfigAutoFlushTest.xml")
public class AsyncLoggerConfigAutoFlushTest {
+ @TempLoggingDir
+ private static Path loggingPath;
+
@Test
- @CleanUpFiles("target/AsyncLoggerConfigAutoFlushTest.log")
- public void testFlushAtEndOfBatch() throws Exception {
- final File file = new File("target", "AsyncLoggerConfigAutoFlushTest.log");
- assertTrue(!file.exists() || file.delete(), "Deleted old file before test");
+ @LoggerContextSource
+ public void testFlushAtEndOfBatch(final LoggerContext ctx) throws Exception {
+ final File file =
+ loggingPath.resolve("AsyncLoggerConfigAutoFlushTest.log").toFile();
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ final Logger log = ctx.getLogger("com.foo.Bar");
final String msg = "Message flushed with immediate flush=false";
log.info(msg);
- CoreLoggerContexts.stopLoggerContext(file); // stop async thread
+ ctx.stop(); // stop async thread
final String contents = Files.readString(file.toPath());
assertTrue(contents.contains(msg), "line1 correct");
}
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.java
similarity index 89%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.java
index fbfec402d0..1b144842a0 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.java
@@ -23,29 +23,34 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.message.AsynchronouslyFormattable;
import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.test.junit.CleanUpFiles;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerConfigErrorOnFormat.xml")
@SetSystemProperty(
key = Log4jPropertyKey.Constant.LOG_EVENT_FACTORY_CLASS_NAME,
value = "org.apache.logging.log4j.core.impl.DefaultLogEventFactory")
public class AsyncLoggerConfigErrorOnFormat {
+ @TempLoggingDir
+ private static Path loggingPath;
+
@Test
- @CleanUpFiles("target/AsyncLoggerConfigErrorOnFormat.log")
+ @LoggerContextSource
public void testError() throws Exception {
- final File file = new File("target", "AsyncLoggerConfigErrorOnFormat.log");
+ final File file =
+ loggingPath.resolve("AsyncLoggerConfigErrorOnFormat.log").toFile();
assertTrue(!file.exists() || file.delete(), "Deleted old file before test");
final Logger log = LogManager.getLogger("com.foo.Bar");
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.java
similarity index 65%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.java
index 9a3877b1af..29f20f63e5 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.java
@@ -16,29 +16,31 @@
*/
package org.apache.logging.log4j.core.async;
+import java.nio.file.Path;
import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.message.SimpleMessage;
-import org.apache.logging.log4j.spi.AbstractLogger;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerConfigTest.xml")
public class AsyncLoggerConfigUseAfterShutdownTest {
+ @TempLoggingDir
+ private static Path loggingPath;
+
@Test
- public void testNoErrorIfLogAfterShutdown() throws Exception {
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ @LoggerContextSource
+ public void testNoErrorIfLogAfterShutdown(final LoggerContext ctx) throws Exception {
+ final Logger log = ctx.getLogger("com.foo.Bar");
log.info("some message");
- CoreLoggerContexts.stopLoggerContext(); // stop async thread
+ ctx.stop(); // stop async thread
// call the #logMessage() method to bypass the isEnabled check:
// before the LOG4J2-639 fix this would throw a NPE
- ((AbstractLogger) log).logMessage("com.foo.Bar", Level.INFO, null, new SimpleMessage("msg"), null);
+ log.logMessage(Level.INFO, null, "com.foo.Bar", null, new SimpleMessage("msg"), null);
}
}
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorInitialStateTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorInitialStateTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorInitialStateTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorInitialStateTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextSelectorTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerContextTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java
similarity index 75%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java
index 5b274ab26f..f75fe35977 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java
@@ -25,47 +25,37 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URI;
+import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
-import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
import org.apache.logging.log4j.core.selector.ContextSelector;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
import org.apache.logging.log4j.core.test.junit.ContextSelectorType;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.plugins.Singleton;
-import org.apache.logging.log4j.test.junit.CleanUpFiles;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@Tag("async")
@ContextSelectorType(AsyncLoggerCustomSelectorLocationTest.CustomAsyncContextSelector.class)
-@CleanUpFiles("target/AsyncLoggerCustomSelectorLocationTest.log")
public class AsyncLoggerCustomSelectorLocationTest {
- @BeforeEach
- public void beforeEach() throws Exception {
- System.setProperty(
- Log4jPropertyKey.CONFIG_LOCATION.getSystemKey(), "AsyncLoggerCustomSelectorLocationTest.xml");
- }
-
- @AfterEach
- public void afterEach() throws Exception {
- System.clearProperty(Log4jPropertyKey.CONFIG_LOCATION.getSystemKey());
- }
+ @TempLoggingDir
+ private static Path loggingPath;
@Test
- public void testCustomAsyncSelectorLocation() throws Exception {
- final File file = new File("target", "AsyncLoggerCustomSelectorLocationTest.log");
- final Logger log = LogManager.getLogger("com.foo.Bar");
- final Logger logIncludingLocation = LogManager.getLogger("com.include.location.Bar");
+ @LoggerContextSource
+ public void testCustomAsyncSelectorLocation(final LoggerContext ctx) throws Exception {
+ final File file =
+ loggingPath.resolve("AsyncLoggerCustomSelectorLocationTest.log").toFile();
+ final Logger log = ctx.getLogger("com.foo.Bar");
+ final Logger logIncludingLocation = ctx.getLogger("com.include.location.Bar");
final String msg = "Async logger msg with location";
log.info(msg);
logIncludingLocation.info(msg);
- CoreLoggerContexts.stopLoggerContext(false, file); // stop async thread
+ ctx.stop(); // stop async thread
final BufferedReader reader = new BufferedReader(new FileReader(file));
final String firstLine = reader.readLine();
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.java
similarity index 82%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.java
index 33cca5ff64..3d5ecfd09e 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.java
@@ -21,22 +21,19 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
-import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerDefaultLocationTest.xml")
public class AsyncLoggerDefaultLocationTest {
@Test
- public void testAsyncLogWritesToLog() throws Exception {
- final LoggerContext context = (LoggerContext) LogManager.getContext(false);
+ @LoggerContextSource
+ public void testAsyncLogWritesToLog(final LoggerContext context) throws Exception {
final ListAppender app = context.getConfiguration().getAppender("List");
assertNotNull(app);
final Logger log = context.getLogger("com.foo.Bar");
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.java
similarity index 93%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.java
index ffbe9238f9..bc7e9ca545 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.java
@@ -23,11 +23,11 @@ import static org.junit.jupiter.api.Assertions.fail;
import com.lmax.disruptor.ExceptionHandler;
import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
import org.apache.logging.log4j.core.test.junit.ContextSelectorType;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.ReusableSimpleMessage;
import org.apache.logging.log4j.spi.AbstractLogger;
@@ -44,16 +44,16 @@ import org.junitpioneer.jupiter.SetSystemProperty;
*/
@Tag("async")
@ContextSelectorType(AsyncLoggerContextSelector.class)
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "log4j2-console.xml")
@SetSystemProperty(
key = Log4jPropertyKey.Constant.ASYNC_LOGGER_EXCEPTION_HANDLER_CLASS_NAME,
value = "org.apache.logging.log4j.core.async.AsyncLoggerEventTranslationExceptionTest$TestExceptionHandler")
class AsyncLoggerEventTranslationExceptionTest {
@Test
- void testEventTranslationExceptionDoesNotCauseAsyncEventException() {
+ @LoggerContextSource
+ void testEventTranslationExceptionDoesNotCauseAsyncEventException(final LoggerContext ctx) {
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ final Logger log = ctx.getLogger("com.foo.Bar");
assertTrue(TestExceptionHandler.INSTANTIATED, "TestExceptionHandler was not configured properly");
@@ -61,7 +61,7 @@ class AsyncLoggerEventTranslationExceptionTest {
assertThrows(TestMessageException.class, () -> ((AbstractLogger) log)
.logMessage("com.foo.Bar", Level.INFO, null, exceptionThrowingMessage, null));
- CoreLoggerContexts.stopLoggerContext(); // stop async thread
+ ctx.stop(); // stop async thread
assertFalse(
TestExceptionHandler.EVENT_EXCEPTION_ENCOUNTERED, "ExceptionHandler encountered an event exception");
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.java
similarity index 72%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.java
index b9bc4da8c3..fb81b286b0 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.java
@@ -22,30 +22,31 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
-import org.apache.logging.log4j.LogManager;
+import java.nio.file.Path;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.test.junit.ContextSelectorType;
-import org.apache.logging.log4j.test.junit.CleanUpFiles;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
@ContextSelectorType(AsyncLoggerContextSelector.class)
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerLocationTest.xml")
-@CleanUpFiles("target/AsyncLoggerLocationTest.log")
public class AsyncLoggerLocationTest {
+ @TempLoggingDir
+ private static Path loggingPath;
+
@Test
- public void testAsyncLogWritesToLog() throws Exception {
- final File file = new File("target", "AsyncLoggerLocationTest.log");
+ @LoggerContextSource
+ public void testAsyncLogWritesToLog(final LoggerContext ctx) throws Exception {
+ final File file = loggingPath.resolve("AsyncLoggerLocationTest.log").toFile();
// System.out.println(f.getAbsolutePath());
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ final Logger log = ctx.getLogger("com.foo.Bar");
final String msg = "Async logger msg with location";
log.info(msg);
- CoreLoggerContexts.stopLoggerContext(false, file); // stop async thread
+ ctx.stop(); // stop async thread
final BufferedReader reader = new BufferedReader(new FileReader(file));
final String line1 = reader.readLine();
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.java
similarity index 98%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.java
index 069fef4f34..02137cd983 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.java
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test;
@Tag("async")
@ContextSelectorType(AsyncLoggerContextSelector.class)
-@LoggerContextSource("NanoTimeToFileTest.xml")
+@LoggerContextSource
public class AsyncLoggerNanoTimeTest {
@Test
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTest.java
similarity index 76%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTest.java
index 99ac7c374f..319e9d0e87 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTest.java
@@ -23,32 +23,34 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
+import java.nio.file.Path;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.test.junit.ContextSelectorType;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.time.internal.DummyNanoClock;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
@ContextSelectorType(AsyncLoggerContextSelector.class)
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerTest.xml")
public class AsyncLoggerTest {
+ @TempLoggingDir
+ private static Path loggingPath;
+
@Test
- public void testAsyncLogWritesToLog() throws Exception {
- final File file = new File("target", "AsyncLoggerTest.log");
- // System.out.println(f.getAbsolutePath());
- file.delete();
+ @LoggerContextSource
+ public void testAsyncLogWritesToLog(final LoggerContext ctx) throws Exception {
+ final File file = loggingPath.resolve("AsyncLoggerTest.log").toFile();
- final AsyncLogger log = (AsyncLogger) LogManager.getLogger("com.foo.Bar");
+ final AsyncLogger log = (AsyncLogger) ctx.getLogger("com.foo.Bar");
assertTrue(log.getNanoClock() instanceof DummyNanoClock);
final String msg = "Async logger msg";
log.info(msg, new InternalError("this is not a real error"));
- CoreLoggerContexts.stopLoggerContext(false, file); // stop async thread
+ ctx.stop(); // stop async thread
final BufferedReader reader = new BufferedReader(new FileReader(file));
final String line1 = reader.readLine();
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.java
similarity index 97%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.java
index c8f413d74a..17774c3765 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.java
@@ -31,7 +31,6 @@ import org.junit.jupiter.api.Test;
import org.junitpioneer.jupiter.SetSystemProperty;
@Tag("async")
-@SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "log4j2-console.xml")
@SetSystemProperty(key = Log4jPropertyKey.Constant.GC_ENABLE_DIRECT_ENCODERS, value = "true")
@SetSystemProperty(key = Log4jPropertyKey.Constant.ASYNC_LOGGER_FORMAT_MESSAGES_IN_BACKGROUND, value = "true")
@ContextSelectorType(AsyncLoggerContextSelector.class)
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.java
similarity index 81%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.java
index 69b1753f9a..2cd7adf0ce 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.java
@@ -23,12 +23,11 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.nio.file.Path;
-import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.test.junit.ContextSelectorType;
-import org.apache.logging.log4j.test.junit.SetTestProperty;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.apache.logging.log4j.test.junit.UsingStatusListener;
import org.junit.jupiter.api.Tag;
@@ -36,7 +35,6 @@ import org.junit.jupiter.api.Test;
@Tag("async")
@UsingStatusListener
-@SetTestProperty(key = "Configuration.file", value = "AsyncLoggerThreadContextTest.xml")
@ContextSelectorType(AsyncLoggerContextSelector.class)
public class AsyncLoggerThreadContextTest {
@@ -44,18 +42,17 @@ public class AsyncLoggerThreadContextTest {
private static Path loggingPath;
@Test
- public void testAsyncLogWritesToLog() throws Exception {
+ @LoggerContextSource
+ public void testAsyncLogWritesToLog(final LoggerContext ctx) throws Exception {
final File file = loggingPath.resolve("AsyncLoggerTest.log").toFile();
- // System.out.println(f.getAbsolutePath());
- file.delete();
ThreadContext.push("stackvalue");
ThreadContext.put("KEY", "mapvalue");
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ final Logger log = ctx.getLogger("com.foo.Bar");
final String msg = "Async logger msg";
log.info(msg, new InternalError("this is not a real error"));
- CoreLoggerContexts.stopLoggerContext(false, file); // stop async thread
+ ctx.stop(); // stop async thread
final BufferedReader reader = new BufferedReader(new FileReader(file));
final String line1 = reader.readLine();
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.java
similarity index 98%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.java
index 982449067c..256ee7130e 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.java
@@ -43,7 +43,7 @@ import org.opentest4j.AssertionFailedError;
*/
@Tag("async")
@ContextSelectorType(AsyncLoggerContextSelector.class)
-@LoggerContextSource("AsyncLoggerTimestampMessageTest.xml")
+@LoggerContextSource
public class AsyncLoggerTimestampMessageTest {
@Factory
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.java
similarity index 63%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.java
index 73ec29efb3..520300e05c 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.java
@@ -17,35 +17,32 @@
package org.apache.logging.log4j.core.async;
import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
-import org.apache.logging.log4j.core.test.CoreLoggerContexts;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.junit.ContextSelectorType;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.message.SimpleMessage;
-import org.apache.logging.log4j.spi.AbstractLogger;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import org.junitpioneer.jupiter.SetSystemProperty;
/**
* Test for <a href="https://issues.apache.org/jira/browse/LOG4J2-639">LOG4J2-639</a>
*/
@Tag("async")
@Tag("functional")
+@ContextSelectorType(AsyncLoggerContextSelector.class)
public class AsyncLoggerUseAfterShutdownTest {
+
@Test
- @SetSystemProperty(
- key = Log4jPropertyKey.Constant.CONTEXT_SELECTOR_CLASS_NAME,
- value = "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector")
- @SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "AsyncLoggerTest.xml")
- public void testNoErrorIfLogAfterShutdown() throws Exception {
- final Logger log = LogManager.getLogger("com.foo.Bar");
+ @LoggerContextSource
+ public void testNoErrorIfLogAfterShutdown(final LoggerContext ctx) throws Exception {
+ final Logger log = ctx.getLogger("com.foo.Bar");
final String msg = "Async logger msg";
log.info(msg, new InternalError("this is not a real error"));
- CoreLoggerContexts.stopLoggerContext(); // stop async thread
+ ctx.stop(); // stop async thread
// call the #logMessage() method to bypass the isEnabled check:
// before the LOG4J2-639 fix this would throw a NPE
- ((AbstractLogger) log).logMessage("com.foo.Bar", Level.INFO, null, new SimpleMessage("msg"), null);
+ log.logMessage(Level.INFO, null, "com.foo.Bar", null, new SimpleMessage("msg"), null);
}
}
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.java
similarity index 97%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.java
index 4256906f11..c7690d858a 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.java
@@ -40,7 +40,7 @@ public class AsyncLoggersWithAsyncLoggerConfigTest {
}
@Test
- @LoggerContextSource("AsyncLoggersWithAsyncLoggerConfigTest.xml")
+ @LoggerContextSource
public void testLoggingWorks(final Logger logger, @Named("List") final ListAppender appender) throws Exception {
logger.error("This is a test");
logger.warn("Hello world!");
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncRootReloadTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncRootReloadTest.java
similarity index 77%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncRootReloadTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncRootReloadTest.java
index bfe7ac3a32..45807b6072 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncRootReloadTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncRootReloadTest.java
@@ -19,10 +19,11 @@ package org.apache.logging.log4j.core.async;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
-import org.apache.logging.log4j.Logger;
+import java.nio.file.Path;
+import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.util.FileUtils;
-import org.apache.logging.log4j.test.junit.CleanUpFiles;
+import org.apache.logging.log4j.test.junit.TempLoggingDir;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@@ -33,16 +34,16 @@ import org.junit.jupiter.api.Test;
@Tag("sleepy")
public class AsyncRootReloadTest {
- private static final String ISSUE = "LOG4J2-807";
- private static final String ISSUE_CONFIG = ISSUE + ".xml";
- private static final String LOG = "target/" + ISSUE + ".log";
- private static final String RESOURCE = "classpath:" + ISSUE_CONFIG;
+ private static final String ISSUE_CONFIG =
+ "/" + AsyncRootReloadTest.class.getName().replace('.', '/') + ".xml";
+
+ @TempLoggingDir
+ private Path loggingPath;
@Test
- @CleanUpFiles(LOG)
- @LoggerContextSource(RESOURCE)
+ @LoggerContextSource
public void testLog4j2_807(final Logger logger) throws InterruptedException, URISyntaxException {
- final URL url = AsyncRootReloadTest.class.getResource("/" + ISSUE_CONFIG);
+ final URL url = AsyncRootReloadTest.class.getResource(ISSUE_CONFIG);
final File configFile = FileUtils.fileFromUri(url.toURI());
logger.info("Log4j configured, will be reconfigured in approx. 5 sec");
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncThreadContextTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncThreadContextTest.java
similarity index 95%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncThreadContextTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncThreadContextTest.java
index 4b28ed58f0..819eaa0f90 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncThreadContextTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/AsyncThreadContextTest.java
@@ -22,6 +22,7 @@ import static org.awaitility.Awaitility.waitAtMost;
import java.io.BufferedReader;
import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.concurrent.TimeUnit;
@@ -35,7 +36,6 @@ import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
import org.apache.logging.log4j.core.selector.ClassLoaderContextSelector;
import org.apache.logging.log4j.core.selector.ContextSelector;
import org.apache.logging.log4j.core.test.CoreLoggerContexts;
-import org.apache.logging.log4j.core.util.NetUtils;
import org.apache.logging.log4j.plugins.di.DI;
import org.apache.logging.log4j.spi.LoggingSystemProperty;
import org.apache.logging.log4j.spi.ReadOnlyThreadContextMap;
@@ -67,16 +67,22 @@ public class AsyncThreadContextTest {
private static Path loggingPath;
enum Mode {
- ALL_ASYNC(AsyncLoggerContextSelector.class, "AsyncLoggerThreadContextTest.xml"),
- MIXED(ClassLoaderContextSelector.class, "AsyncLoggerConfigThreadContextTest.xml"),
- BOTH_ALL_ASYNC_AND_MIXED(AsyncLoggerContextSelector.class, "AsyncLoggerConfigThreadContextTest.xml");
+ ALL_ASYNC(AsyncLoggerContextSelector.class),
+ MIXED(ClassLoaderContextSelector.class),
+ BOTH_ALL_ASYNC_AND_MIXED(AsyncLoggerContextSelector.class);
final Class<? extends ContextSelector> contextSelectorType;
final URI configUri;
- Mode(final Class<? extends ContextSelector> contextSelectorType, final String file) {
+ Mode(final Class<? extends ContextSelector> contextSelectorType) {
this.contextSelectorType = contextSelectorType;
- configUri = NetUtils.toURI(file);
+ try {
+ configUri = AsyncThreadContextTest.class
+ .getResource(AsyncThreadContextTest.class.getSimpleName() + "/" + name() + ".xml")
+ .toURI();
+ } catch (URISyntaxException e) {
+ throw new IllegalArgumentException(e);
+ }
}
}
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelectorTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelectorTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelectorTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelectorTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/GarbageFreeAsyncThreadContextTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/GarbageFreeAsyncThreadContextTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/GarbageFreeAsyncThreadContextTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/GarbageFreeAsyncThreadContextTest.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.java
similarity index 98%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.java
index 7f0a872616..5b5e1ef57b 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.java
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test;
*/
@Tag("async")
@ContextSelectorType(AsyncLoggerContextSelector.class)
-@LoggerContextSource("log4j-list.xml")
+@LoggerContextSource
public class Log4j2Jira1688AsyncTest {
private static Object[] createArray(final int size) {
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest2.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLogger2Test.java
similarity index 95%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest2.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLogger2Test.java
index 5699a28630..beda3aa982 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest2.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLogger2Test.java
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.test.junit.SetTestProperty;
* is immutable.
*/
@SetTestProperty(key = "AsyncLogger.formatMsg", value = "true")
-public class QueueFullAsyncLoggerTest2 extends QueueFullAsyncLoggerTest {
+public class QueueFullAsyncLogger2Test extends QueueFullAsyncLoggerTest {
@Override
protected void checkConfig(final LoggerContext ctx) {
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest3.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLogger3Test.java
similarity index 96%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest3.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLogger3Test.java
index 51be5edf8d..1df420b8d7 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest3.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLogger3Test.java
@@ -24,6 +24,7 @@ import java.util.concurrent.CountDownLatch;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.GarbageCollectionHelper;
import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.apache.logging.log4j.message.Message;
@@ -40,7 +41,7 @@ import org.junit.jupiter.api.Timeout;
@SetTestProperty(key = "AsyncLogger.ringBufferSize", value = "128")
@SetTestProperty(key = "AsyncLogger.formatMsg", value = "true")
@SetTestProperty(key = "AsyncLogger.queueFullPolicy", value = "Discard")
-public class QueueFullAsyncLoggerTest3 extends QueueFullAbstractTest {
+public class QueueFullAsyncLogger3Test extends QueueFullAbstractTest {
@Override
protected void checkConfig(final LoggerContext ctx) {
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest2.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfig2Test.java
similarity index 95%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest2.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfig2Test.java
index 918fe6c13e..ef5f5f0455 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest2.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfig2Test.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.test.junit.SetTestProperty;
* Tests queue full scenarios with AsyncLoggers in configuration.
*/
@SetTestProperty(key = "AsyncLogger.formatMsg", value = "true")
-public class QueueFullAsyncLoggerConfigTest2 extends QueueFullAsyncLoggerConfigTest {
+public class QueueFullAsyncLoggerConfig2Test extends QueueFullAsyncLoggerConfigTest {
@Override
protected void checkConfig(final LoggerContext ctx) throws ReflectiveOperationException {
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest2.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToString2Test.java
similarity index 95%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest2.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToString2Test.java
index d503e34367..7820f1c1e5 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest2.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToString2Test.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.test.junit.SetTestProperty;
* Tests queue full scenarios with AsyncLoggers in configuration.
*/
@SetTestProperty(key = "AsyncLogger.formatMsg", value = "true")
-public class QueueFullAsyncLoggerConfigLoggingFromToStringTest2
+public class QueueFullAsyncLoggerConfigLoggingFromToString2Test
extends QueueFullAsyncLoggerConfigLoggingFromToStringTest {
@Override
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java
similarity index 96%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java
index 7b1c069273..cdeec6a0f5 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.async;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.apache.logging.log4j.test.junit.SetTestProperty;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.java
similarity index 96%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.java
index de6a0cd674..76eaa471dd 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.java
@@ -17,6 +17,7 @@
package org.apache.logging.log4j.core.async;
import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.apache.logging.log4j.test.junit.SetTestProperty;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java
similarity index 96%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java
index db061b2caf..49e3e125b8 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java
@@ -17,6 +17,7 @@
package org.apache.logging.log4j.core.async;
import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.apache.logging.log4j.test.junit.SetTestProperty;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest.java
similarity index 96%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest.java
index eb83ab4f28..064517ae63 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest.java
+++ b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerTest.java
@@ -17,6 +17,7 @@
package org.apache.logging.log4j.core.async;
import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.apache.logging.log4j.test.junit.SetTestProperty;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java b/log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
rename to log4j-async-logger/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
diff --git a/log4j-core-test/src/test/resources/AsyncWaitStrategyIncorrectFactoryConfigTest.xml b/log4j-async-logger/src/test/resources/AsyncWaitStrategyIncorrectFactoryConfigTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/AsyncWaitStrategyIncorrectFactoryConfigTest.xml
rename to log4j-async-logger/src/test/resources/AsyncWaitStrategyIncorrectFactoryConfigTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.xml
similarity index 100%
copy from log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlockTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConfigTest2.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig2Test.xml
similarity index 94%
copy from log4j-core-test/src/test/resources/AsyncLoggerConfigTest2.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig2Test.xml
index d4090ca4ee..188f173ac8 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerConfigTest2.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig2Test.xml
@@ -18,7 +18,7 @@
<Configuration status="off">
<Appenders>
<File name="File"
- fileName="target/AsyncLoggerConfigTest2.log"
+ fileName="${test:logging.path}/AsyncLoggerConfigTest2.log"
bufferedIO="false"
immediateFlush="true"
append="true">
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConfigTest2.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig3Test.xml
similarity index 94%
rename from log4j-core-test/src/test/resources/AsyncLoggerConfigTest2.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig3Test.xml
index d4090ca4ee..188f173ac8 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerConfigTest2.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig3Test.xml
@@ -18,7 +18,7 @@
<Configuration status="off">
<Appenders>
<File name="File"
- fileName="target/AsyncLoggerConfigTest2.log"
+ fileName="${test:logging.path}/AsyncLoggerConfigTest2.log"
bufferedIO="false"
immediateFlush="true"
append="true">
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfig4Test.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConfigAutoFlushTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.xml
similarity index 94%
rename from log4j-core-test/src/test/resources/AsyncLoggerConfigAutoFlushTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.xml
index 32a9dda46c..5dd6428cb6 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerConfigAutoFlushTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigAutoFlushTest.xml
@@ -18,7 +18,7 @@
<Configuration status="off">
<Appenders>
<File name="File"
- fileName="target/AsyncLoggerConfigAutoFlushTest.log"
+ fileName="${test:logging.path}/AsyncLoggerConfigAutoFlushTest.log"
bufferedIO="true"
immediateFlush="false"
append="false">
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConfigErrorOnFormat.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.xml
similarity index 94%
rename from log4j-core-test/src/test/resources/AsyncLoggerConfigErrorOnFormat.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.xml
index 8dd03842e1..3752763819 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerConfigErrorOnFormat.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigErrorOnFormat.xml
@@ -18,7 +18,7 @@
<Configuration status="off">
<Appenders>
<RandomAccessFile name="File"
- fileName="target/AsyncLoggerConfigErrorOnFormat.log"
+ fileName="${test:logging.path}/AsyncLoggerConfigErrorOnFormat.log"
bufferedIO="false"
immediateFlush="true"
append="false">
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.xml
similarity index 100%
copy from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.xml
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigUseAfterShutdownTest.xml
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerConfigWithAsyncEnabledTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerCustomSelectorLocationTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.xml
similarity index 91%
rename from log4j-core-test/src/test/resources/AsyncLoggerCustomSelectorLocationTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.xml
index 30bfa3e9c1..35d0be64a7 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerCustomSelectorLocationTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.xml
@@ -17,7 +17,7 @@
-->
<Configuration status="OFF">
<Appenders>
- <RandomAccessFile name="RandomAccessFile" fileName="target/AsyncLoggerCustomSelectorLocationTest.log"
+ <RandomAccessFile name="RandomAccessFile" fileName="${test:logging.path}/AsyncLoggerCustomSelectorLocationTest.log"
immediateFlush="false" append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %X{aKey} %location %m %ex%n</Pattern>
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerDefaultLocationTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/AsyncLoggerDefaultLocationTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerDefaultLocationTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.xml
similarity index 83%
copy from log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.xml
index f178a581f8..d85749123b 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerEventTranslationExceptionTest.xml
@@ -15,18 +15,16 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-<Configuration status="off">
+<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
- <PatternLayout>
- <Pattern>%xEx{0}</Pattern>
- </PatternLayout>
+ <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable" />
</Console>
</Appenders>
-
<Loggers>
- <Root level="info">
- <AppenderRef ref="Console"/>
+ <Logger name="org.foo" level="DEBUG" />
+ <Root level="TRACE">
+ <AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerLocationTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.xml
similarity index 92%
rename from log4j-core-test/src/test/resources/AsyncLoggerLocationTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.xml
index 18d69dbd9b..ccffbc7390 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerLocationTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerLocationTest.xml
@@ -17,7 +17,7 @@
-->
<Configuration status="OFF">
<Appenders>
- <RandomAccessFile name="RandomAccessFile" fileName="target/AsyncLoggerLocationTest.log"
+ <RandomAccessFile name="RandomAccessFile" fileName="${test:logging.path}/AsyncLoggerLocationTest.log"
immediateFlush="false" append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %X{aKey} %location %m %ex%n</Pattern>
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerTimestampMessageTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.xml
similarity index 91%
copy from log4j-core-test/src/test/resources/AsyncLoggerTimestampMessageTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.xml
index e2abd60e37..f86ce79421 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerTimestampMessageTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerNanoTimeTest.xml
@@ -18,12 +18,12 @@
<Configuration status="off">
<Appenders>
<List name="list">
- <PatternLayout pattern="%d{UNIX_MILLIS} %m"/>
+ <PatternLayout pattern="%N AND %nano AND %m"/>
</List>
</Appenders>
<Loggers>
- <Root level="info" includeLocation="false">
+ <Root level="info">
<AppenderRef ref="list"/>
</Root>
</Loggers>
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTest.xml
similarity index 92%
copy from log4j-core-test/src/test/resources/AsyncLoggerTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTest.xml
index 5047563bca..c97bf21fc0 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTest.xml
@@ -17,7 +17,7 @@
-->
<Configuration status="off">
<Appenders>
- <RandomAccessFile name="RandomAccessFile" fileName="target/AsyncLoggerTest.log"
+ <RandomAccessFile name="RandomAccessFile" fileName="${test:logging.path}/AsyncLoggerTest.log"
immediateFlush="false" append="false">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %X{aKey} %location %m %ex%n</Pattern>
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.xml
similarity index 83%
rename from log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.xml
index f178a581f8..d85749123b 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggerConsoleTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTestArgumentFreedOnErrorTest.xml
@@ -15,18 +15,16 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-<Configuration status="off">
+<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
- <PatternLayout>
- <Pattern>%xEx{0}</Pattern>
- </PatternLayout>
+ <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable" />
</Console>
</Appenders>
-
<Loggers>
- <Root level="info">
- <AppenderRef ref="Console"/>
+ <Logger name="org.foo" level="DEBUG" />
+ <Root level="TRACE">
+ <AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerThreadContextTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.xml
similarity index 100%
copy from log4j-core-test/src/test/resources/AsyncLoggerThreadContextTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerThreadContextTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerTimestampMessageTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/AsyncLoggerTimestampMessageTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerTimestampMessageTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/AsyncLoggerTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggerUseAfterShutdownTest.xml
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncAppenderTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggersWithAsyncLoggerConfigTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.xml
similarity index 100%
copy from log4j-core-test/src/test/resources/AsyncLoggersWithAsyncLoggerConfigTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncLoggersWithAsyncLoggerConfigTest.xml
diff --git a/log4j-core-test/src/test/resources/LOG4J2-807.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncRootReloadTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/LOG4J2-807.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncRootReloadTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerThreadContextTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncThreadContextTest/ALL_ASYNC.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/AsyncLoggerThreadContextTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncThreadContextTest/ALL_ASYNC.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConfigThreadContextTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncThreadContextTest/BOTH_ALL_ASYNC_AND_MIXED.xml
similarity index 100%
copy from log4j-core-test/src/test/resources/AsyncLoggerConfigThreadContextTest.xml
copy to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncThreadContextTest/BOTH_ALL_ASYNC_AND_MIXED.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggerConfigThreadContextTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncThreadContextTest/MIXED.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/AsyncLoggerConfigThreadContextTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/AsyncThreadContextTest/MIXED.xml
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationInvalidTest.xml
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/DisruptorConfigurationTest.xml
diff --git a/log4j-core-test/src/test/resources/AsyncLoggersWithAsyncLoggerConfigTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.xml
similarity index 88%
rename from log4j-core-test/src/test/resources/AsyncLoggersWithAsyncLoggerConfigTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.xml
index 8e5ca9f12c..fd7fdf6852 100644
--- a/log4j-core-test/src/test/resources/AsyncLoggersWithAsyncLoggerConfigTest.xml
+++ b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/Log4j2Jira1688AsyncTest.xml
@@ -18,13 +18,12 @@
<Configuration status="off">
<Appenders>
<List name="List">
- <PatternLayout pattern="%c %m"/>
+ <PatternLayout pattern="[%-5level] %c{1.} %msg%n" />
</List>
</Appenders>
-
<Loggers>
- <AsyncRoot level="trace">
- <AppenderRef ref="List"/>
- </AsyncRoot>
+ <Root level="debug">
+ <AppenderRef ref="List" />
+ </Root>
</Loggers>
</Configuration>
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.xml
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.xml b/log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.xml
rename to log4j-async-logger/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigTest.xml
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java
similarity index 95%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java
rename to log4j-core-test/src/main/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java
index b7aea87421..1feff3edd8 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/GarbageCollectionHelper.java
@@ -18,7 +18,6 @@ package org.apache.logging.log4j.core;
import static org.junit.Assert.assertTrue;
-import com.google.common.io.ByteStreams;
import java.io.Closeable;
import java.io.IOException;
import java.io.OutputStream;
@@ -27,7 +26,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
public final class GarbageCollectionHelper implements Closeable, Runnable {
- private static final OutputStream sink = ByteStreams.nullOutputStream();
+ private static final OutputStream sink = OutputStream.nullOutputStream();
private final AtomicBoolean running = new AtomicBoolean();
private final CountDownLatch latch = new CountDownLatch(1);
private final Thread gcThread = new Thread(new Runnable() {
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/ThreadContextTestAccess.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/ThreadContextTestAccess.java
similarity index 100%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/ThreadContextTestAccess.java
rename to log4j-core-test/src/main/java/org/apache/logging/log4j/core/ThreadContextTestAccess.java
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java
similarity index 99%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java
rename to log4j-core-test/src/main/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java
index 2dc85a0974..5085f7ec4f 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java
@@ -37,6 +37,7 @@ import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.AsyncAppender;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.util.Constants;
import org.apache.logging.log4j.status.StatusData;
import org.apache.logging.log4j.status.StatusLogger;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/TestPatternConverters.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/TestPatternConverters.java
similarity index 97%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/TestPatternConverters.java
rename to log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/TestPatternConverters.java
index 3f06139531..d1400e40d0 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/TestPatternConverters.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/TestPatternConverters.java
@@ -14,8 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.logging.log4j.core;
+package org.apache.logging.log4j.core.test;
+import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.pattern.ConverterKeys;
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
import org.apache.logging.log4j.plugins.Namespace;
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/BlockingAppender.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/async/BlockingAppender.java
similarity index 98%
rename from log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/BlockingAppender.java
rename to log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/async/BlockingAppender.java
index 5ffabe8118..ddee82e620 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/BlockingAppender.java
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/async/BlockingAppender.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.logging.log4j.core.async;
+package org.apache.logging.log4j.core.test.async;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/async/package-info.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/async/package-info.java
new file mode 100644
index 0000000000..666b01d264
--- /dev/null
+++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/async/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+@Export
+@Version("3.0.0")
+package org.apache.logging.log4j.core.test.async;
+
+import org.osgi.annotation.bundle.Export;
+import org.osgi.annotation.versioning.Version;
diff --git a/log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAbstractTest.xml b/log4j-core-test/src/main/resources/org/apache/logging/log4j/core/async/QueueFullAbstractTest.xml
similarity index 100%
rename from log4j-core-test/src/test/resources/org/apache/logging/log4j/core/async/QueueFullAbstractTest.xml
rename to log4j-core-test/src/main/resources/org/apache/logging/log4j/core/async/QueueFullAbstractTest.xml
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlock.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlock.java
deleted file mode 100644
index 3e6be93817..0000000000
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerClassLoadDeadlock.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.core.async;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-class AsyncLoggerClassLoadDeadlock {
- static {
- final Logger log = LogManager.getLogger("com.foo.bar.deadlock");
- final Exception e = new Exception();
- // the key to reproducing the problem is to fill up the ring buffer so that
- // log.info call will block on ring buffer as well
- for (int i = 0; i < AsyncLoggerClassLoadDeadlockTest.RING_BUFFER_SIZE * 2; ++i) {
- log.info("clinit", e);
- }
- }
-}
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncAppenderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncAppenderTest.java
index 0e73bf8c2b..e2383a8691 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncAppenderTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncAppenderTest.java
@@ -17,6 +17,7 @@
package org.apache.logging.log4j.core.async;
import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.async.BlockingAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.junit.jupiter.api.Test;
diff --git a/pom.xml b/pom.xml
index 26b3c44413..f4fd649db7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -236,6 +236,7 @@
<module>log4j-api</module>
<module>log4j-api-test</module>
<module>log4j-appserver</module>
+ <module>log4j-async-logger</module>
<module>log4j-config-jackson</module>
<module>log4j-config-properties</module>
<module>log4j-config-yaml</module>
@@ -374,6 +375,12 @@
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-async-logger</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-config-jackson</artifactId>