This is an automated email from the ASF dual-hosted git repository.
jinwoo pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 3b21ac6dd4 GEODE-10543: Upgrade Log4j from 2.17.2 to 2.25.3 to
remediate CVE-202… (#7975)
3b21ac6dd4 is described below
commit 3b21ac6dd49ddfc91b79b0464c7d1bb4255775e2
Author: Jinwoo Hwang <[email protected]>
AuthorDate: Thu Jan 8 15:22:37 2026 -0500
GEODE-10543: Upgrade Log4j from 2.17.2 to 2.25.3 to remediate CVE-202…
(#7975)
* GEODE-10543: Upgrade Log4j from 2.17.2 to 2.25.3 to remediate
CVE-2025-68161
- Updated log4j version to 2.25.3 in DependencyConstraints.groovy
- Added log4j-core-test dependency for integration tests
- Migrated integration test imports to new log4j-core-test package
structure:
* org.apache.logging.log4j.junit →
org.apache.logging.log4j.core.test.junit
* org.apache.logging.log4j.test → org.apache.logging.log4j.core.test
- Added GraalVM annotation processor configuration to suppress compilation
warnings
- Updated documentation references to log4j 2.25.3
- Updated test resource files with new JAR versions
All 21 integration tests migrated with zero logic changes.
Build successful with all tests passing.
* GEODE-10543: Fix GraalVM annotation processor options to apply only to
main compilation
The annotation processor options were being applied to all JavaCompile
tasks including integration tests, where the Log4j GraalVM processor is not
triggered. This caused compilation warnings about unrecognized processor
options.
Changed from tasks.withType(JavaCompile) to tasks.named('compileJava') to
restrict the configuration to main source compilation only.
* GEODE-10543: Exclude AssertJ 3.27.3 from log4j-core-test to prevent
NoSuchMethodError
Log4j 2.25.3's log4j-core-test transitively depends on AssertJ 3.27.3, but
Geode's
custom AssertJ assertions (AbstractLogFileAssert) were built against
AssertJ 3.22.0.
The CommonValidations.failIfEmptySinceActualIsNotEmpty method signature
changed
between versions, causing NoSuchMethodError at runtime.
Exclude assertj-core from log4j-core-test dependency to force usage of
3.22.0,
ensuring binary compatibility with Geode's test infrastructure.
---
.../src/test/resources/expected-pom.xml | 10 ++++----
.../gradle/plugins/DependencyConstraints.groovy | 3 ++-
.../gradle-test-projects/management/build.gradle | 2 +-
.../integrationTest/resources/assembly_content.txt | 10 ++++----
.../resources/gfsh_dependency_classpath.txt | 10 ++++----
.../logging/configuring_log4j2.html.md.erb | 10 ++++----
.../managing/logging/how_logging_works.html.md.erb | 4 +--
.../weblogic_setting_up_the_module.html.md.erb | 6 ++---
geode-log4j/build.gradle | 29 ++++++++++++++++++++--
.../impl/AlertAppenderIntegrationTest.java | 2 +-
.../BothLogWriterAppendersIntegrationTest.java | 2 +-
.../CacheWithCustomLogConfigIntegrationTest.java | 4 +--
...gurationWithLogLevelChangesIntegrationTest.java | 2 +-
...penderWithLoggerContextRuleIntegrationTest.java | 2 +-
...mWithBothLogWriterAppendersIntegrationTest.java | 2 +-
...edSystemWithLogLevelChangesIntegrationTest.java | 2 +-
.../internal/impl/FastLoggerIntegrationTest.java | 2 +-
...reVerboseMarkerFilterAcceptIntegrationTest.java | 4 +--
...fireVerboseMarkerFilterDenyIntegrationTest.java | 4 +--
.../impl/GeodeConsoleAppenderIntegrationTest.java | 2 +-
...odeConsoleAppenderWithCacheIntegrationTest.java | 2 +-
...leAppenderWithSystemOutRuleIntegrationTest.java | 2 +-
...deVerboseMarkerFilterAcceptIntegrationTest.java | 4 +--
...eodeVerboseMarkerFilterDenyIntegrationTest.java | 4 +--
...gServiceWithCustomLogConfigIntegrationTest.java | 4 +--
.../impl/LogWriterAppenderIntegrationTest.java | 2 +-
.../LogWriterAppenderShutdownIntegrationTest.java | 2 +-
...LogWriterAppenderWithLimitsIntegrationTest.java | 2 +-
...AppenderWithMemberNameInXmlIntegrationTest.java | 2 +-
.../SecurityLogWriterAppenderIntegrationTest.java | 2 +-
.../resources/dependency_classpath.txt | 10 ++++----
31 files changed, 87 insertions(+), 61 deletions(-)
diff --git a/boms/geode-all-bom/src/test/resources/expected-pom.xml
b/boms/geode-all-bom/src/test/resources/expected-pom.xml
index 3d59bbebba..1aed6be024 100644
--- a/boms/geode-all-bom/src/test/resources/expected-pom.xml
+++ b/boms/geode-all-bom/src/test/resources/expected-pom.xml
@@ -530,27 +530,27 @@
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
- <version>2.17.2</version>
+ <version>2.25.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
- <version>2.17.2</version>
+ <version>2.25.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
- <version>2.17.2</version>
+ <version>2.25.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
- <version>2.17.2</version>
+ <version>2.25.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
- <version>2.17.2</version>
+ <version>2.25.3</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
diff --git
a/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
b/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
index 352fc1bdcc..ac814c526f 100644
---
a/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
+++
b/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
@@ -46,7 +46,7 @@ class DependencyConstraints {
deps.put("jakarta.annotation.version", "2.1.1")
deps.put("jakarta.ejb.version", "4.0.1")
deps.put("jgroups.version", "3.6.20.Final")
- deps.put("log4j.version", "2.17.2")
+ deps.put("log4j.version", "2.25.3")
deps.put("log4j-slf4j2-impl.version", "2.23.1")
deps.put("micrometer.version", "1.14.0")
deps.put("shiro.version", "1.13.0")
@@ -258,6 +258,7 @@ class DependencyConstraints {
dependencySet(group: 'org.apache.logging.log4j', version:
get('log4j.version')) {
entry('log4j-api')
entry('log4j-core')
+ entry('log4j-core-test')
entry('log4j-jcl')
entry('log4j-jul')
entry('log4j-slf4j-impl')
diff --git
a/geode-assembly/src/acceptanceTest/resources/gradle-test-projects/management/build.gradle
b/geode-assembly/src/acceptanceTest/resources/gradle-test-projects/management/build.gradle
index 10af76ab0a..48626e2a2c 100644
---
a/geode-assembly/src/acceptanceTest/resources/gradle-test-projects/management/build.gradle
+++
b/geode-assembly/src/acceptanceTest/resources/gradle-test-projects/management/build.gradle
@@ -25,7 +25,7 @@ repositories {
dependencies {
implementation("${project.group}:geode-core:${project.version}")
- runtimeOnly('org.apache.logging.log4j:log4j-slf4j-impl:2.17.2')
+ runtimeOnly('org.apache.logging.log4j:log4j-slf4j-impl:2.25.3')
}
application {
diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt
b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index 921f5f8ea0..4d69191014 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -1012,11 +1012,11 @@ lib/jna-platform-5.11.0.jar
lib/joda-time-2.12.7.jar
lib/jopt-simple-5.0.4.jar
lib/jul-to-slf4j-2.0.16.jar
-lib/log4j-api-2.17.2.jar
-lib/log4j-core-2.17.2.jar
-lib/log4j-jcl-2.17.2.jar
-lib/log4j-jul-2.17.2.jar
-lib/log4j-slf4j-impl-2.17.2.jar
+lib/log4j-api-2.25.3.jar
+lib/log4j-core-2.25.3.jar
+lib/log4j-jcl-2.25.3.jar
+lib/log4j-jul-2.25.3.jar
+lib/log4j-slf4j-impl-2.25.3.jar
lib/logback-classic-1.5.11.jar
lib/logback-core-1.5.11.jar
lib/lucene-analysis-common-9.12.3.jar
diff --git
a/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
b/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
index e2dd99e343..290385f1c6 100644
--- a/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
+++ b/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
@@ -32,11 +32,11 @@ jaxb-runtime-4.0.2.jar
jaxb-core-4.0.2.jar
jakarta.xml.bind-api-4.0.2.jar
jopt-simple-5.0.4.jar
-log4j-slf4j-impl-2.17.2.jar
-log4j-core-2.17.2.jar
-log4j-jcl-2.17.2.jar
-log4j-jul-2.17.2.jar
-log4j-api-2.17.2.jar
+log4j-slf4j-impl-2.25.3.jar
+log4j-core-2.25.3.jar
+log4j-jcl-2.25.3.jar
+log4j-jul-2.25.3.jar
+log4j-api-2.25.3.jar
spring-aop-6.1.14.jar
spring-shell-autoconfigure-3.3.3.jar
spring-shell-standard-commands-3.3.3.jar
diff --git a/geode-docs/managing/logging/configuring_log4j2.html.md.erb
b/geode-docs/managing/logging/configuring_log4j2.html.md.erb
index 460af7992f..46f88f40a5 100644
--- a/geode-docs/managing/logging/configuring_log4j2.html.md.erb
+++ b/geode-docs/managing/logging/configuring_log4j2.html.md.erb
@@ -36,16 +36,16 @@ You can also configure Log4j 2 to work with various popular
and commonly used lo
For example, if you are using:
-- **Commons Logging**, download "Commons Logging Bridge"
(`log4j-jcl-2.17.2.jar`)
-- **SLF4J**, download "SLFJ4 Binding" (`log4j-slf4j-impl-2.17.2.jar`)
-- **java.util.logging**, download the "JUL adapter" (`log4j-jul-2.17.2.jar`)
+- **Commons Logging**, download "Commons Logging Bridge"
(`log4j-jcl-2.25.3.jar`)
+- **SLF4J**, download "SLFJ4 Binding" (`log4j-slf4j-impl-2.25.3.jar`)
+- **java.util.logging**, download the "JUL adapter" (`log4j-jul-2.25.3.jar`)
See
[http://logging.apache.org/log4j/2.x/faq.html](http://logging.apache.org/log4j/2.x/faq.html)
for more examples.
-All three of the above JAR files are in the full distribution of Log4J 2.17.2
which can be downloaded at
[http://logging.apache.org/log4j/2.x/download.html](http://logging.apache.org/log4j/2.x/download.html).
Download the appropriate bridge, adapter, or binding JARs to ensure that
<%=vars.product_name%> logging is integrated with every logging API used in
various third-party libraries or in your own applications.
+All three of the above JAR files are in the full distribution of Log4J 2.25.3
which can be downloaded at
[http://logging.apache.org/log4j/2.x/download.html](http://logging.apache.org/log4j/2.x/download.html).
Download the appropriate bridge, adapter, or binding JARs to ensure that
<%=vars.product_name%> logging is integrated with every logging API used in
various third-party libraries or in your own applications.
**Note:**
-<%=vars.product_name_long%> has been tested with Log4j 2.17.2. As newer
versions of Log4j 2 come out, you can find 2.17.2 under Previous Releases on
that page.
+<%=vars.product_name_long%> has been tested with Log4j 2.25.3. As newer
versions of Log4j 2 come out, you can find 2.25.3 under Previous Releases on
that page.
## Customizing Your Own log4j2.xml File
diff --git a/geode-docs/managing/logging/how_logging_works.html.md.erb
b/geode-docs/managing/logging/how_logging_works.html.md.erb
index ea150a81a8..4103bce48e 100644
--- a/geode-docs/managing/logging/how_logging_works.html.md.erb
+++ b/geode-docs/managing/logging/how_logging_works.html.md.erb
@@ -21,9 +21,9 @@ limitations under the License.
<%=vars.product_name%> uses [Apache Log4j
2](http://logging.apache.org/log4j/2.x/) API and Core libraries as the basis
for its logging system. Log4j 2 API is a popular and powerful front-end logging
API used by all the <%=vars.product_name%> classes to generate log statements.
Log4j 2 Core is a backend implementation for logging; you can route any of the
front-end logging API libraries to log to this backend. <%=vars.product_name%>
uses the Core backend to run three custom Log4j 2 Append [...]
-<%=vars.product_name%> has been tested with Log4j 2.17.2.
+<%=vars.product_name%> has been tested with Log4j 2.25.3.
<%=vars.product_name%> requires the
-`log4j-api-2.17.2.jar` and `log4j-core-2.17.2.jar`
+`log4j-api-2.25.3.jar` and `log4j-core-2.25.3.jar`
JAR files to be in the classpath.
Both of these JARs are distributed in the `<path-to-product>/lib` directory
and included in the appropriate `*-dependencies.jar` convenience libraries.
diff --git
a/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
b/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
index 237ce158d3..26bfb69b94 100644
---
a/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
+++
b/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
@@ -108,9 +108,9 @@ If you are deploying an ear file:
lib/geode-serialization-2.0.0.jar
lib/jakarta.transaction-api-2.0.1.jar
lib/jgroups-3.6.20.Final.jar
- lib/log4j-api-2.17.2.jar
- lib/log4j-core-2.17.2.jar
- lib/log4j-jul-2.17.2.jar
+ lib/log4j-api-2.25.3.jar
+ lib/log4j-core-2.25.3.jar
+ lib/log4j-jul-2.25.3.jar
```
## <a
id="weblogic_setting_up_the_module__section_20294A39368D4402AEFB3D074E8D5887"
class="no-quick-link"></a>Peer-to-Peer Setup
diff --git a/geode-log4j/build.gradle b/geode-log4j/build.gradle
index d2501c2a7a..9d0cd64d89 100644
--- a/geode-log4j/build.gradle
+++ b/geode-log4j/build.gradle
@@ -21,6 +21,24 @@ plugins {
id 'jmh'
}
+// GEODE-10543: Configure GraalVM annotation processor options for Log4j 2.25.3
+// Log4j 2.25.3 includes a GraalVM Reachability Metadata annotation processor
that generates
+// plugin descriptors for native image compilation. Without these options, the
processor emits
+// warnings about missing Maven coordinates, which are treated as compilation
errors by Gradle.
+//
+// These options specify the Maven coordinates (groupId:artifactId) for the
generated plugin
+// descriptors, suppressing the warnings and allowing compilation to succeed.
+//
+// Apply only to main source compilation, as integration tests don't trigger
the annotation processor.
+//
+// Reference: https://issues.apache.org/jira/browse/LOG4J2-3642
+tasks.named('compileJava').configure {
+ options.compilerArgs += [
+ '-Alog4j.graalvm.groupId=org.apache.geode',
+ '-Alog4j.graalvm.artifactId=geode-log4j'
+ ]
+}
+
dependencies {
api(platform(project(':boms:geode-all-bom')))
@@ -63,8 +81,15 @@ dependencies {
exclude module: 'geode-core'
}
integrationTestImplementation('junit:junit')
- integrationTestImplementation('org.apache.logging.log4j:log4j-core::tests')
-
integrationTestImplementation('org.apache.logging.log4j:log4j-core::test-sources')
+ // Log4j 2.20.0+ moved test utilities to log4j-core-test with new package
names:
+ // org.apache.logging.log4j.junit → org.apache.logging.log4j.core.test.junit
+ // org.apache.logging.log4j.test → org.apache.logging.log4j.core.test
+ // log4j-core-test 2.25.3 transitively depends on assertj-core 3.27.3, but
Geode's
+ // custom AssertJ assertions were built against 3.22.0. Force 3.22.0 to avoid
+ // NoSuchMethodError: CommonValidations.failIfEmptySinceActualIsNotEmpty
+ integrationTestImplementation('org.apache.logging.log4j:log4j-core-test') {
+ exclude group: 'org.assertj', module: 'assertj-core'
+ }
integrationTestImplementation('org.assertj:assertj-core')
distributedTestImplementation(project(':geode-junit')) {
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/alerting/log4j/internal/impl/AlertAppenderIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/alerting/log4j/internal/impl/AlertAppenderIntegrationTest.java
index 1a43d58917..0bd54f4090 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/alerting/log4j/internal/impl/AlertAppenderIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/alerting/log4j/internal/impl/AlertAppenderIntegrationTest.java
@@ -36,7 +36,7 @@ import java.util.Properties;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/BothLogWriterAppendersIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/BothLogWriterAppendersIntegrationTest.java
index 2f347145a4..b93a506ff6 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/BothLogWriterAppendersIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/BothLogWriterAppendersIntegrationTest.java
@@ -26,7 +26,7 @@ import java.io.File;
import java.net.URL;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/CacheWithCustomLogConfigIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/CacheWithCustomLogConfigIntegrationTest.java
index 4e4098ae89..1766378404 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/CacheWithCustomLogConfigIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/CacheWithCustomLogConfigIntegrationTest.java
@@ -30,8 +30,8 @@ import java.util.regex.Pattern;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConfigurationWithLogLevelChangesIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConfigurationWithLogLevelChangesIntegrationTest.java
index 1d47731446..ea1bd4db3b 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConfigurationWithLogLevelChangesIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConfigurationWithLogLevelChangesIntegrationTest.java
@@ -29,7 +29,7 @@ import java.net.URL;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
index 9b73b57d23..41dfb704a6 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
@@ -28,7 +28,7 @@ import org.apache.logging.log4j.core.LifeCycle;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.appender.DefaultErrorHandler;
import org.apache.logging.log4j.core.appender.OutputStreamManager;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java
index 5834692a2f..ab57b6aa24 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java
@@ -27,7 +27,7 @@ import java.net.URL;
import java.util.Properties;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithLogLevelChangesIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithLogLevelChangesIntegrationTest.java
index b404b5d175..62ef3caed9 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithLogLevelChangesIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/DistributedSystemWithLogLevelChangesIntegrationTest.java
@@ -31,7 +31,7 @@ import java.util.Properties;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
index e624d4d599..391fcfae85 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
@@ -30,7 +30,7 @@ import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterAcceptIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterAcceptIntegrationTest.java
index e25ebfe32e..19f759b2a3 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterAcceptIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterAcceptIntegrationTest.java
@@ -24,8 +24,8 @@ import java.util.List;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterDenyIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterDenyIntegrationTest.java
index 1d02f5ed82..c7cbc9bab5 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterDenyIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GemfireVerboseMarkerFilterDenyIntegrationTest.java
@@ -23,8 +23,8 @@ import java.util.List;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderIntegrationTest.java
index 9ea97fa3ff..3177f9ab10 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderIntegrationTest.java
@@ -28,7 +28,7 @@ import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.appender.DefaultErrorHandler;
import org.apache.logging.log4j.core.appender.OutputStreamManager;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithCacheIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithCacheIntegrationTest.java
index c26056d736..1c1a46eb5c 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithCacheIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithCacheIntegrationTest.java
@@ -27,7 +27,7 @@ import java.util.Properties;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithSystemOutRuleIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithSystemOutRuleIntegrationTest.java
index d4aff79523..0a5a80e00a 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithSystemOutRuleIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeConsoleAppenderWithSystemOutRuleIntegrationTest.java
@@ -21,7 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.net.URL;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterAcceptIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterAcceptIntegrationTest.java
index 0a69499a77..02adc62693 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterAcceptIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterAcceptIntegrationTest.java
@@ -24,8 +24,8 @@ import java.util.List;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterDenyIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterDenyIntegrationTest.java
index f369f0a0db..007017d708 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterDenyIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/GeodeVerboseMarkerFilterDenyIntegrationTest.java
@@ -24,8 +24,8 @@ import java.util.List;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogServiceWithCustomLogConfigIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogServiceWithCustomLogConfigIntegrationTest.java
index c4084d85f9..d01ad2b74c 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogServiceWithCustomLogConfigIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogServiceWithCustomLogConfigIntegrationTest.java
@@ -25,8 +25,8 @@ import java.util.regex.Pattern;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.appender.ListAppender;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderIntegrationTest.java
index 8926636c13..5a24646b0c 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderIntegrationTest.java
@@ -31,7 +31,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderShutdownIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderShutdownIntegrationTest.java
index 8453713f62..9719bffe98 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderShutdownIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderShutdownIntegrationTest.java
@@ -26,7 +26,7 @@ import java.net.URL;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithLimitsIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithLimitsIntegrationTest.java
index 71f90b4c4b..1afc5892e5 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithLimitsIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithLimitsIntegrationTest.java
@@ -24,7 +24,7 @@ import static org.mockito.Mockito.when;
import java.io.File;
import java.net.URL;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithMemberNameInXmlIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithMemberNameInXmlIntegrationTest.java
index afc197790a..5f64d1f538 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithMemberNameInXmlIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LogWriterAppenderWithMemberNameInXmlIntegrationTest.java
@@ -34,7 +34,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
diff --git
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/SecurityLogWriterAppenderIntegrationTest.java
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/SecurityLogWriterAppenderIntegrationTest.java
index 00ae368a33..0d6b0c69e1 100644
---
a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/SecurityLogWriterAppenderIntegrationTest.java
+++
b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/SecurityLogWriterAppenderIntegrationTest.java
@@ -25,7 +25,7 @@ import java.io.File;
import java.net.URL;
import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
diff --git
a/geode-server-all/src/integrationTest/resources/dependency_classpath.txt
b/geode-server-all/src/integrationTest/resources/dependency_classpath.txt
index 2e0a90e7e5..546fb91827 100644
--- a/geode-server-all/src/integrationTest/resources/dependency_classpath.txt
+++ b/geode-server-all/src/integrationTest/resources/dependency_classpath.txt
@@ -33,11 +33,11 @@ commons-lang3-3.18.0.jar
jaxb-runtime-4.0.2.jar
jaxb-core-4.0.2.jar
jakarta.xml.bind-api-4.0.2.jar
-log4j-slf4j-impl-2.17.2.jar
-log4j-core-2.17.2.jar
-log4j-jcl-2.17.2.jar
-log4j-jul-2.17.2.jar
-log4j-api-2.17.2.jar
+log4j-slf4j-impl-2.25.3.jar
+log4j-core-2.25.3.jar
+log4j-jcl-2.25.3.jar
+log4j-jul-2.25.3.jar
+log4j-api-2.25.3.jar
spring-shell-starter-3.3.3.jar
rmiio-2.1.2.jar
antlr-2.7.7.jar