This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/main by this push:
new a6954de883 Upgrade to Spring Boot 3 (#2072)
a6954de883 is described below
commit a6954de883e2e06a2507f0999d1d41fc1badbcd8
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Thu Dec 7 13:48:34 2023 +0100
Upgrade to Spring Boot 3 (#2072)
---
.github/dependabot.yaml | 9 ---
.../log4j/core/config/ConfigurationFactory.java | 5 ++
.../log4j/core/net/UrlConnectionFactory.java | 11 +++
.../log4j/jdbc/appender/internal/JndiUtil.java | 10 ++-
.../AbstractJdbcAppenderDataSourceTest.java | 6 +-
.../appender/DataSourceConnectionSourceTest.java | 4 +-
.../JdbcAppenderMapMessageDataSourceTest.java | 6 +-
log4j-jndi-test/pom.xml | 7 +-
.../logging/log4j/jndi/test/junit/JndiRule.java | 89 +++++++++++++++++++---
.../routing/RoutingAppenderWithJndiTest.java | 5 +-
.../org/apache/logging/log4j/jndi/JndiManager.java | 9 +++
log4j-parent/pom.xml | 26 -------
log4j-spring-cloud-config-client/pom.xml | 51 +++++--------
.../config/client/Log4j2EventListenerTest.java | 3 -
14 files changed, 151 insertions(+), 90 deletions(-)
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index fb02e7e425..0f80d895ea 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -115,15 +115,6 @@ updates:
# EclipseLink 3.x is Jakarta EE 9
- dependency-name: "org.eclipse.persistence:*"
update-types: ["version-update:semver-major"]
- # Spring 6.x is Jakarta EE 9
- - dependency-name: "org.springframework:*"
- update-types: ["version-update:semver-major"]
- # Spring Boot 3.x is Jakarta EE 9
- - dependency-name: "org.springframework.boot:*"
- update-types: ["version-update:semver-major"]
- # Spring Cloud 2022.x is Jakarta EE 9
- - dependency-name: "org.springframework.cloud:*"
- update-types: ["version-update:semver-major"]
# Keep Logback version 1.2.x
- dependency-name: "ch.qos.logback:*"
update-types: ["version-update:semver-major",
"version-update:semver-minor"]
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
index 0898b7a98f..493638450f 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
@@ -121,6 +121,11 @@ public abstract class ConfigurationFactory extends
ConfigurationBuilderFactory {
return true;
}
+ @Deprecated(since = "3.0.0", forRemoval = true)
+ public static ConfigurationFactory getInstance() {
+ return
LoggerContext.getContext(false).getInstanceFactory().getInstance(KEY);
+ }
+
/**
* Required for Spring Boot.
* @param props PropertiesUtil.
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
index 4093e23377..12c7f5dbee 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java
@@ -56,6 +56,17 @@ public class UrlConnectionFactory {
private static final String NO_PROTOCOLS = "_none";
public static final String ALLOWED_PROTOCOLS =
"log4j2.Configuration.allowedProtocols";
+ @Deprecated(since = "3.0.0", forRemoval = true)
+ public static <T extends URLConnection> T createConnection(
+ final URL url,
+ final long lastModifiedMillis,
+ final SslConfiguration sslConfiguration,
+ final AuthorizationProvider authorizationProvider)
+ throws IOException {
+ return createConnection(
+ url, lastModifiedMillis, sslConfiguration,
authorizationProvider, PropertiesUtil.getProperties());
+ }
+
@SuppressFBWarnings(
value = "URLCONNECTION_SSRF_FD",
justification = "The URL parameter originates only from secure
sources.")
diff --git
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/internal/JndiUtil.java
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/internal/JndiUtil.java
index ebfaa4693b..97213bc45e 100644
---
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/internal/JndiUtil.java
+++
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/internal/JndiUtil.java
@@ -29,13 +29,17 @@ import org.apache.logging.log4j.status.StatusLogger;
public final class JndiUtil {
private static final Logger LOGGER = StatusLogger.getLogger();
+ /**
+ * Manager name used for accessing the {@link JndiManager} instance.
+ */
+ public static final String JNDI_MANAGER_NAME =
DataSourceConnectionSource.class.getCanonicalName();
+
private JndiUtil() {}
public static DataSource getDataSource(final String jndiName) {
try {
- final DataSource dataSource = JndiManager.getDefaultManager(
-
DataSourceConnectionSource.class.getCanonicalName())
- .lookup(jndiName);
+ final DataSource dataSource =
+
JndiManager.getDefaultManager(JNDI_MANAGER_NAME).lookup(jndiName);
if (dataSource == null) {
LOGGER.error("No data source found with JNDI name [" +
jndiName + "].");
return null;
diff --git
a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java
b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java
index 8b404fa453..e3709bd68f 100644
---
a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java
+++
b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java
@@ -31,6 +31,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.apache.logging.log4j.core.util.Throwables;
+import org.apache.logging.log4j.jdbc.appender.internal.JndiUtil;
import org.apache.logging.log4j.jndi.test.junit.JndiRule;
import org.h2.util.IOUtils;
import org.junit.BeforeClass;
@@ -57,7 +58,10 @@ public abstract class AbstractJdbcAppenderDataSourceTest {
protected AbstractJdbcAppenderDataSourceTest(final JdbcRule jdbcRule) {
this.rules = RuleChain.emptyRuleChain()
- .around(new
JndiRule("java:/comp/env/jdbc/TestDataSourceAppender", createMockDataSource()))
+ .around(new JndiRule(
+ JndiUtil.JNDI_MANAGER_NAME,
+ "java:/comp/env/jdbc/TestDataSourceAppender",
+ createMockDataSource()))
.around(jdbcRule)
.around(new
LoggerContextRule("org/apache/logging/log4j/jdbc/appender/log4j2-data-source.xml"));
this.jdbcRule = jdbcRule;
diff --git
a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java
b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java
index 8868984b0a..25dc8a603c 100644
---
a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java
+++
b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java
@@ -27,6 +27,7 @@ import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
+import org.apache.logging.log4j.jdbc.appender.internal.JndiUtil;
import org.apache.logging.log4j.jndi.test.junit.JndiRule;
import org.junit.Rule;
import org.junit.Test;
@@ -52,7 +53,8 @@ public class DataSourceConnectionSourceTest {
private final String jndiURL;
public DataSourceConnectionSourceTest(final String jndiURL) {
- this.rules = RuleChain.outerRule(new JndiRule(jndiURL,
dataSource)).around(new LoggerContextRule(CONFIG));
+ this.rules = RuleChain.outerRule(new
JndiRule(JndiUtil.JNDI_MANAGER_NAME, jndiURL, dataSource))
+ .around(new LoggerContextRule(CONFIG));
this.jndiURL = jndiURL;
}
diff --git
a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
index 46224ba2b3..45c9a201db 100644
---
a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
+++
b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java
@@ -33,6 +33,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.apache.logging.log4j.core.util.Throwables;
+import org.apache.logging.log4j.jdbc.appender.internal.JndiUtil;
import org.apache.logging.log4j.jndi.test.junit.JndiRule;
import org.apache.logging.log4j.message.MapMessage;
import org.junit.Assert;
@@ -70,7 +71,10 @@ public class JdbcAppenderMapMessageDataSourceTest {
protected JdbcAppenderMapMessageDataSourceTest(final JdbcRule jdbcRule) {
// @formatter:off
this.rules = RuleChain.emptyRuleChain()
- .around(new
JndiRule("java:/comp/env/jdbc/TestDataSourceAppender", createMockDataSource()))
+ .around(new JndiRule(
+ JndiUtil.JNDI_MANAGER_NAME,
+ "java:/comp/env/jdbc/TestDataSourceAppender",
+ createMockDataSource()))
.around(jdbcRule)
.around(new LoggerContextRule(
"org/apache/logging/log4j/jdbc/appender/log4j2-data-source-map-message.xml"));
diff --git a/log4j-jndi-test/pom.xml b/log4j-jndi-test/pom.xml
index a8a610db70..e5cd9cef2b 100644
--- a/log4j-jndi-test/pom.xml
+++ b/log4j-jndi-test/pom.xml
@@ -31,6 +31,7 @@
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
<module.name>org.apache.logging.log4j.jndi.test</module.name>
+ <simple-jndi.version>0.23.0</simple-jndi.version>
</properties>
<dependencies>
<dependency>
@@ -53,10 +54,10 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
- <!-- `org.springframework:spring-test` is required for
`org.springframework.mock.jndi.SimpleNamingContextBuilder`: -->
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
+ <groupId>com.github.h-thurow</groupId>
+ <artifactId>simple-jndi</artifactId>
+ <version>${simple-jndi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
diff --git
a/log4j-jndi-test/src/main/java/org/apache/logging/log4j/jndi/test/junit/JndiRule.java
b/log4j-jndi-test/src/main/java/org/apache/logging/log4j/jndi/test/junit/JndiRule.java
index 04a8b5c71e..dca58d4160 100644
---
a/log4j-jndi-test/src/main/java/org/apache/logging/log4j/jndi/test/junit/JndiRule.java
+++
b/log4j-jndi-test/src/main/java/org/apache/logging/log4j/jndi/test/junit/JndiRule.java
@@ -16,29 +16,66 @@
*/
package org.apache.logging.log4j.jndi.test.junit;
+import static java.util.Objects.requireNonNull;
+import static org.junit.Assert.assertNotNull;
+
import java.util.Collections;
+import java.util.Hashtable;
import java.util.Map;
+import java.util.Set;
+import java.util.Spliterators;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+import javax.annotation.Nullable;
import javax.naming.Context;
+import javax.naming.NameClassPair;
+import javax.naming.NamingException;
+import javax.naming.spi.InitialContextFactoryBuilder;
+import javax.naming.spi.NamingManager;
+import org.apache.logging.log4j.jndi.JndiManager;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
-import org.springframework.mock.jndi.SimpleNamingContextBuilder;
+import org.osjava.sj.jndi.MemoryContext;
/**
* JUnit rule to create a mock {@link Context} and bind an object to a name.
*
* @since 2.8
*/
+@SuppressWarnings("BanJNDI")
public class JndiRule implements TestRule {
- private final Map<String, Object> initialBindings;
+ static {
+ final InitialContextFactoryBuilder factoryBuilder =
+ factoryBuilderEnv -> factoryEnv -> new MemoryContext(new
Hashtable<>()) {};
+ try {
+ NamingManager.setInitialContextFactoryBuilder(factoryBuilder);
+ } catch (final NamingException error) {
+ throw new RuntimeException(error);
+ }
+ }
+
+ @Nullable
+ private final String managerName;
+
+ private final Map<String, Object> bindings;
public JndiRule(final String name, final Object value) {
- this.initialBindings = Collections.singletonMap(name, value);
+ this(null, Collections.singletonMap(name, value));
}
- public JndiRule(final Map<String, Object> initialBindings) {
- this.initialBindings = initialBindings;
+ public JndiRule(@Nullable final String managerName, final String name,
final Object value) {
+ this(managerName, Collections.singletonMap(name, value));
+ }
+
+ public JndiRule(final Map<String, Object> bindings) {
+ this(null, bindings);
+ }
+
+ public JndiRule(@Nullable final String managerName, final Map<String,
Object> bindings) {
+ this.managerName = managerName;
+ this.bindings = requireNonNull(bindings, "bindings");
}
@Override
@@ -46,12 +83,46 @@ public class JndiRule implements TestRule {
return new Statement() {
@Override
public void evaluate() throws Throwable {
- final SimpleNamingContextBuilder builder =
SimpleNamingContextBuilder.emptyActivatedContextBuilder();
- for (final Map.Entry<String, Object> entry :
initialBindings.entrySet()) {
- builder.bind(entry.getKey(), entry.getValue());
- }
+ resetJndiManager();
base.evaluate();
}
};
}
+
+ private void resetJndiManager() throws NamingException {
+ if (JndiManager.isJndiEnabled()) {
+ final Context context = getContext();
+ clearBindings(context);
+ addBindings(context);
+ }
+ }
+
+ private Context getContext() {
+ final JndiManager manager =
+ managerName == null ? JndiManager.getDefaultManager() :
JndiManager.getDefaultManager(managerName);
+ @Nullable final Context context = manager.getContext();
+ assertNotNull(context);
+ return context;
+ }
+
+ private static void clearBindings(final Context context) throws
NamingException {
+ final Set<NameClassPair> existingBindings = StreamSupport.stream(
+
Spliterators.spliteratorUnknownSize(context.list("").asIterator(), 0), false)
+ .collect(Collectors.toSet());
+ existingBindings.forEach(binding -> {
+ try {
+ context.unbind(binding.getName());
+ } catch (NamingException error) {
+ throw new RuntimeException(error);
+ }
+ });
+ }
+
+ private void addBindings(final Context context) throws NamingException {
+ for (final Map.Entry<String, Object> entry : bindings.entrySet()) {
+ final String name = entry.getKey();
+ final Object object = entry.getValue();
+ context.bind(name, object);
+ }
+ }
}
diff --git
a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java
b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java
index 1b426904e1..09dc7cff11 100644
---
a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java
+++
b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java
@@ -21,11 +21,11 @@ import static org.junit.Assert.*;
import java.io.File;
import java.util.Collections;
import javax.naming.Context;
-import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.logging.log4j.EventLogger;
import org.apache.logging.log4j.core.test.appender.ListAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
+import org.apache.logging.log4j.jndi.JndiManager;
import org.apache.logging.log4j.jndi.test.junit.JndiRule;
import org.apache.logging.log4j.message.StructuredDataMessage;
import org.junit.After;
@@ -77,7 +77,8 @@ public class RoutingAppenderWithJndiTest {
assertTrue("The default log file was not created",
defaultLogFile.exists());
// now set jndi resource to Application1
- final Context context = new InitialContext();
+ final Context context = JndiManager.getDefaultManager().getContext();
+ assertNotNull(context);
context.bind(JNDI_CONTEXT_NAME, "Application1");
msg = new StructuredDataMessage("Test", "This is a message from
Application1", "Context");
diff --git
a/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java
b/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java
index 83248679f9..81e5d3feb6 100644
--- a/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java
+++ b/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java
@@ -21,6 +21,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nullable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@@ -194,6 +195,14 @@ public class JndiManager extends AbstractManager {
return JndiCloser.closeSilently(this.context);
}
+ /**
+ * @return the active context
+ */
+ @Nullable
+ public Context getContext() {
+ return context;
+ }
+
/**
* Looks up a named object through this JNDI context.
*
diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index e68c95ec18..e08a14f455 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -152,8 +152,6 @@
<slf4j.version>2.0.9</slf4j.version>
<!-- Last version before a breaking change -->
<slf4j-ext.version>1.7.25</slf4j-ext.version>
- <spring-boot.version>2.7.18</spring-boot.version>
- <spring-framework.version>5.3.31</spring-framework.version>
<system-stubs.version>2.1.5</system-stubs.version>
<tomcat-juli.version>10.1.16</tomcat-juli.version>
<velocity.version>1.7</velocity.version>
@@ -820,30 +818,6 @@
<version>${slf4j-ext.version}</version>
</dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot</artifactId>
- <version>${spring-boot.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <version>${spring-boot.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring-framework.version}</version>
- </dependency>
-
<dependency>
<groupId>uk.org.webcompere</groupId>
<artifactId>system-stubs-core</artifactId>
diff --git a/log4j-spring-cloud-config-client/pom.xml
b/log4j-spring-cloud-config-client/pom.xml
index 12c74caca6..6d6594c041 100644
--- a/log4j-spring-cloud-config-client/pom.xml
+++ b/log4j-spring-cloud-config-client/pom.xml
@@ -45,7 +45,8 @@
<Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
<!-- dependency versions -->
- <spring-cloud.version>2021.0.8</spring-cloud.version>
+ <spring-boot.version>3.2.0</spring-boot.version>
+ <spring-cloud.version>2022.0.4</spring-cloud.version>
</properties>
@@ -68,36 +69,28 @@
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <version>${spring-boot.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
</dependencies>
</dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- </dependency>
-
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-spring-boot</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-bus</artifactId>
- </dependency>
-
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
@@ -115,26 +108,20 @@
</dependency>
<dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
<scope>test</scope>
</dependency>
diff --git
a/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
b/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
index 22108c9459..65512cf72c 100644
---
a/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
+++
b/log4j-spring-cloud-config-client/src/test/java/org/apache/logging/log4j/spring/cloud/config/client/Log4j2EventListenerTest.java
@@ -27,7 +27,6 @@ import org.apache.logging.log4j.core.config.Reconfigurable;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.apache.logging.log4j.core.util.Source;
import org.apache.logging.log4j.core.util.Watcher;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
@@ -41,8 +40,6 @@ import org.springframework.test.context.junit4.SpringRunner;
/**
* Class Description goes here.
*/
-@Ignore(
- "Fails with `java.lang.NoClassDefFoundError:
org/apache/logging/log4j/internal/LogManagerStatus` since `log4j-spring-boot`
of `2.x` is injected due to Spring Boot 2 BOM import. Spring Boot must be
updated from version 2 to 3. (#2018)")
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {SpringConfiguration.class})
public class Log4j2EventListenerTest {