You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by vi...@apache.org on 2022/06/28 19:54:29 UTC

[hudi] branch master updated: [HUDI-1176] Upgrade hudi to log4j2 (#5366)

This is an automated email from the ASF dual-hosted git repository.

vinoth pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/master by this push:
     new fd7d25ab63 [HUDI-1176] Upgrade hudi to log4j2 (#5366)
fd7d25ab63 is described below

commit fd7d25ab630cdd7a3adf21d8a30e03ab718d65d4
Author: bschell <bd...@gmail.com>
AuthorDate: Tue Jun 28 14:54:23 2022 -0500

    [HUDI-1176] Upgrade hudi to log4j2 (#5366)
    
    * Move to log4j2
    
    cr: https://code.amazon.com/reviews/CR-71010705
    
    * Upgrade unit tests to log4j2
    
    * update exclusion
    
    Co-authored-by: Brandon Scheller <bs...@amazon.com>
---
 hudi-aws/pom.xml                                   | 12 +++++--
 hudi-cli/pom.xml                                   | 12 +++++--
 hudi-client/hudi-client-common/pom.xml             | 12 +++++--
 .../http/HoodieWriteCommitHttpCallbackClient.java  |  4 +--
 .../hudi/metrics/datadog/DatadogHttpClient.java    |  4 +--
 .../hudi/metrics/datadog/DatadogReporter.java      |  4 +--
 .../hudi/callback/http/TestCallbackHttpClient.java | 38 ++++++++++++--------
 .../metrics/datadog/TestDatadogHttpClient.java     | 41 ++++++++++++++--------
 .../hudi/metrics/datadog/TestDatadogReporter.java  | 25 ++++++++-----
 hudi-gcp/pom.xml                                   | 12 +++++--
 hudi-integ-test/pom.xml                            | 12 +++++--
 hudi-kafka-connect/pom.xml                         | 12 +++++--
 hudi-spark-datasource/hudi-spark/pom.xml           | 12 +++++--
 hudi-sync/hudi-adb-sync/pom.xml                    | 12 +++++--
 hudi-sync/hudi-datahub-sync/pom.xml                | 12 +++++--
 hudi-sync/hudi-hive-sync/pom.xml                   | 12 +++++--
 hudi-timeline-service/pom.xml                      | 12 +++++--
 hudi-utilities/pom.xml                             | 12 +++++--
 packaging/hudi-integ-test-bundle/pom.xml           | 12 +++++--
 packaging/hudi-kafka-connect-bundle/pom.xml        | 12 +++++--
 packaging/hudi-timeline-server-bundle/pom.xml      | 12 +++++--
 pom.xml                                            | 18 +++++++---
 22 files changed, 235 insertions(+), 79 deletions(-)

diff --git a/hudi-aws/pom.xml b/hudi-aws/pom.xml
index dc9653a62f..03ee1d8539 100644
--- a/hudi-aws/pom.xml
+++ b/hudi-aws/pom.xml
@@ -48,8 +48,16 @@
 
         <!-- Logging -->
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+          <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-1.2-api</artifactId>
         </dependency>
 
         <!-- Hadoop -->
diff --git a/hudi-cli/pom.xml b/hudi-cli/pom.xml
index e3111f3fb9..663c1a7bcd 100644
--- a/hudi-cli/pom.xml
+++ b/hudi-cli/pom.xml
@@ -201,8 +201,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/hudi-client/hudi-client-common/pom.xml b/hudi-client/hudi-client-common/pom.xml
index ddfd4a2fd5..f764f9f3ae 100644
--- a/hudi-client/hudi-client-common/pom.xml
+++ b/hudi-client/hudi-client-common/pom.xml
@@ -55,8 +55,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <!-- Parquet -->
diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/callback/client/http/HoodieWriteCommitHttpCallbackClient.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/callback/client/http/HoodieWriteCommitHttpCallbackClient.java
index 6d1059cb98..568204f655 100644
--- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/callback/client/http/HoodieWriteCommitHttpCallbackClient.java
+++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/callback/client/http/HoodieWriteCommitHttpCallbackClient.java
@@ -28,8 +28,8 @@ import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.hudi.config.HoodieWriteCommitCallbackConfig;
 import org.apache.hudi.config.HoodieWriteConfig;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogHttpClient.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogHttpClient.java
index b0912aaaab..b3b1bcb8f7 100644
--- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogHttpClient.java
+++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogHttpClient.java
@@ -32,8 +32,8 @@ import org.apache.http.entity.ContentType;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogReporter.java b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogReporter.java
index a388aecda0..b67252a729 100644
--- a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogReporter.java
+++ b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/metrics/datadog/DatadogReporter.java
@@ -34,8 +34,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.databind.node.TextNode;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/callback/http/TestCallbackHttpClient.java b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/callback/http/TestCallbackHttpClient.java
index 0ab6f32dc5..8d3d00d572 100644
--- a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/callback/http/TestCallbackHttpClient.java
+++ b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/callback/http/TestCallbackHttpClient.java
@@ -23,11 +23,13 @@ import org.apache.hudi.callback.client.http.HoodieWriteCommitHttpCallbackClient;
 import org.apache.http.StatusLine;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.Logger;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.ArgumentCaptor;
@@ -52,10 +54,10 @@ import static org.mockito.Mockito.when;
 public class TestCallbackHttpClient {
 
   @Mock
-  AppenderSkeleton appender;
+  Appender appender;
 
   @Captor
-  ArgumentCaptor<LoggingEvent> logCaptor;
+  ArgumentCaptor<LogEvent> logCaptor;
 
   @Mock
   CloseableHttpClient httpClient;
@@ -66,8 +68,17 @@ public class TestCallbackHttpClient {
   @Mock
   StatusLine statusLine;
 
+  @BeforeEach
+  void prepareAppender() {
+    when(appender.getName()).thenReturn("MockAppender");
+    when(appender.isStarted()).thenReturn(true);
+    when(appender.isStopped()).thenReturn(false);
+    ((Logger) LogManager.getLogger(HoodieWriteCommitHttpCallbackClient.class)).addAppender(appender);
+  }
+
   @AfterEach
   void resetMocks() {
+    ((Logger) LogManager.getLogger(HoodieWriteCommitHttpCallbackClient.class)).removeAppender(appender);
     reset(appender, httpClient, httpResponse, statusLine);
   }
 
@@ -83,21 +94,19 @@ public class TestCallbackHttpClient {
 
   @Test
   public void sendPayloadShouldLogWhenRequestFailed() throws IOException {
-    Logger.getRootLogger().addAppender(appender);
     when(httpClient.execute(any())).thenThrow(IOException.class);
 
     HoodieWriteCommitHttpCallbackClient hoodieWriteCommitCallBackHttpClient =
         new HoodieWriteCommitHttpCallbackClient("fake_api_key", "fake_url", httpClient);
     hoodieWriteCommitCallBackHttpClient.send("{}");
 
-    verify(appender).doAppend(logCaptor.capture());
-    assertEquals("Failed to send callback.", logCaptor.getValue().getRenderedMessage());
+    verify(appender).append(logCaptor.capture());
+    assertEquals("Failed to send callback.", logCaptor.getValue().getMessage().getFormattedMessage());
     assertEquals(Level.WARN, logCaptor.getValue().getLevel());
   }
 
   @Test
   public void sendPayloadShouldLogUnsuccessfulSending() {
-    Logger.getRootLogger().addAppender(appender);
     mockResponse(401);
     when(httpResponse.toString()).thenReturn("unauthorized");
 
@@ -105,22 +114,21 @@ public class TestCallbackHttpClient {
         new HoodieWriteCommitHttpCallbackClient("fake_api_key", "fake_url", httpClient);
     hoodieWriteCommitCallBackHttpClient.send("{}");
 
-    verify(appender).doAppend(logCaptor.capture());
-    assertEquals("Failed to send callback message. Response was unauthorized", logCaptor.getValue().getRenderedMessage());
+    verify(appender).append(logCaptor.capture());
+    assertEquals("Failed to send callback message. Response was unauthorized", logCaptor.getValue().getMessage().getFormattedMessage());
     assertEquals(Level.WARN, logCaptor.getValue().getLevel());
   }
 
   @Test
   public void sendPayloadShouldLogSuccessfulSending() {
-    Logger.getRootLogger().addAppender(appender);
     mockResponse(202);
 
     HoodieWriteCommitHttpCallbackClient hoodieWriteCommitCallBackHttpClient =
         new HoodieWriteCommitHttpCallbackClient("fake_api_key", "fake_url", httpClient);
     hoodieWriteCommitCallBackHttpClient.send("{}");
 
-    verify(appender).doAppend(logCaptor.capture());
-    assertTrue(logCaptor.getValue().getRenderedMessage().startsWith("Sent Callback data"));
+    verify(appender).append(logCaptor.capture());
+    assertTrue(logCaptor.getValue().getMessage().getFormattedMessage().startsWith("Sent Callback data"));
     assertEquals(Level.INFO, logCaptor.getValue().getLevel());
   }
 
diff --git a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogHttpClient.java b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogHttpClient.java
index 642c46bafb..ebc46db00d 100644
--- a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogHttpClient.java
+++ b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogHttpClient.java
@@ -23,11 +23,13 @@ import org.apache.hudi.metrics.datadog.DatadogHttpClient.ApiSite;
 import org.apache.http.StatusLine;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.Logger;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -55,10 +57,10 @@ import static org.mockito.Mockito.when;
 public class TestDatadogHttpClient {
 
   @Mock
-  AppenderSkeleton appender;
+  Appender appender;
 
   @Captor
-  ArgumentCaptor<LoggingEvent> logCaptor;
+  ArgumentCaptor<LogEvent> logCaptor;
 
   @Mock
   CloseableHttpClient httpClient;
@@ -69,8 +71,17 @@ public class TestDatadogHttpClient {
   @Mock
   StatusLine statusLine;
 
+  @BeforeEach
+  void prepareAppender() {
+    when(appender.getName()).thenReturn("MockAppender");
+    when(appender.isStarted()).thenReturn(true);
+    when(appender.isStopped()).thenReturn(false);
+    ((Logger) LogManager.getLogger(DatadogHttpClient.class)).addAppender(appender);
+  }
+
   @AfterEach
   void resetMocks() {
+    ((org.apache.logging.log4j.core.Logger) LogManager.getLogger(DatadogHttpClient.class)).removeAppender(appender);
     reset(appender, httpClient, httpResponse, statusLine);
   }
 
@@ -106,41 +117,41 @@ public class TestDatadogHttpClient {
 
   @Test
   public void sendPayloadShouldLogWhenRequestFailed() throws IOException {
-    Logger.getRootLogger().addAppender(appender);
+    ((Logger) LogManager.getLogger(DatadogHttpClient.class)).addAppender(appender);
     when(httpClient.execute(any())).thenThrow(IOException.class);
 
     DatadogHttpClient ddClient = new DatadogHttpClient(ApiSite.US, "foo", true, httpClient);
     ddClient.send("{}");
 
-    verify(appender).doAppend(logCaptor.capture());
-    assertEquals("Failed to send to Datadog.", logCaptor.getValue().getRenderedMessage());
+    verify(appender).append(logCaptor.capture());
+    assertEquals("Failed to send to Datadog.", logCaptor.getValue().getMessage().getFormattedMessage());
     assertEquals(Level.WARN, logCaptor.getValue().getLevel());
   }
 
   @Test
   public void sendPayloadShouldLogUnsuccessfulSending() {
-    Logger.getRootLogger().addAppender(appender);
+    ((Logger) LogManager.getLogger(DatadogHttpClient.class)).addAppender(appender);
     mockResponse(401);
     when(httpResponse.toString()).thenReturn("unauthorized");
 
     DatadogHttpClient ddClient = new DatadogHttpClient(ApiSite.US, "foo", true, httpClient);
     ddClient.send("{}");
 
-    verify(appender).doAppend(logCaptor.capture());
-    assertEquals("Failed to send to Datadog. Response was unauthorized", logCaptor.getValue().getRenderedMessage());
+    verify(appender).append(logCaptor.capture());
+    assertEquals("Failed to send to Datadog. Response was unauthorized", logCaptor.getValue().getMessage().getFormattedMessage());
     assertEquals(Level.WARN, logCaptor.getValue().getLevel());
   }
 
   @Test
   public void sendPayloadShouldLogSuccessfulSending() {
-    Logger.getRootLogger().addAppender(appender);
+    ((Logger) LogManager.getLogger(DatadogHttpClient.class)).addAppender(appender);
     mockResponse(202);
 
     DatadogHttpClient ddClient = new DatadogHttpClient(ApiSite.US, "foo", true, httpClient);
     ddClient.send("{}");
     
-    verify(appender).doAppend(logCaptor.capture());
-    assertTrue(logCaptor.getValue().getRenderedMessage().startsWith("Sent metrics data"));
+    verify(appender).append(logCaptor.capture());
+    assertTrue(logCaptor.getValue().getMessage().getFormattedMessage().startsWith("Sent metrics data"));
     assertEquals(Level.DEBUG, logCaptor.getValue().getLevel());
   }
 
diff --git a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogReporter.java b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogReporter.java
index 607cce9ee8..838b97c493 100644
--- a/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogReporter.java
+++ b/hudi-client/hudi-client-common/src/test/java/org/apache/hudi/metrics/datadog/TestDatadogReporter.java
@@ -24,10 +24,11 @@ import org.apache.hudi.metrics.datadog.DatadogReporter.PayloadBuilder;
 
 import com.codahale.metrics.MetricFilter;
 import com.codahale.metrics.MetricRegistry;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.LoggingEvent;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.Logger;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -44,15 +45,16 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
 public class TestDatadogReporter {
 
   @Mock
-  AppenderSkeleton appender;
+  Appender appender;
 
   @Captor
-  ArgumentCaptor<LoggingEvent> logCaptor;
+  ArgumentCaptor<LogEvent> logCaptor;
 
   @Mock
   MetricRegistry registry;
@@ -62,6 +64,7 @@ public class TestDatadogReporter {
 
   @AfterEach
   void resetMocks() {
+    ((Logger) LogManager.getLogger(DatadogReporter.class)).removeAppender(appender);
     reset(appender, registry, client);
   }
 
@@ -75,14 +78,18 @@ public class TestDatadogReporter {
 
   @Test
   public void stopShouldLogWhenEnclosedClientFailToClose() throws IOException {
-    Logger.getRootLogger().addAppender(appender);
+    when(appender.getName()).thenReturn("MockAppender");
+    when(appender.isStarted()).thenReturn(true);
+    when(appender.isStopped()).thenReturn(false);
+    ((Logger) LogManager.getLogger(DatadogReporter.class)).addAppender(appender);
+    
     doThrow(IOException.class).when(client).close();
 
     new DatadogReporter(registry, client, "foo", Option.empty(), Option.empty(),
         MetricFilter.ALL, TimeUnit.SECONDS, TimeUnit.SECONDS).stop();
 
-    verify(appender).doAppend(logCaptor.capture());
-    assertEquals("Error disconnecting from Datadog.", logCaptor.getValue().getRenderedMessage());
+    verify(appender).append(logCaptor.capture());
+    assertEquals("Error disconnecting from Datadog.", logCaptor.getValue().getMessage().getFormattedMessage());
     assertEquals(Level.WARN, logCaptor.getValue().getLevel());
   }
 
diff --git a/hudi-gcp/pom.xml b/hudi-gcp/pom.xml
index 8c4f54f047..4dd2fceb9d 100644
--- a/hudi-gcp/pom.xml
+++ b/hudi-gcp/pom.xml
@@ -63,8 +63,16 @@ See https://github.com/GoogleCloudPlatform/cloud-opensource-java/wiki/The-Google
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+     <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/hudi-integ-test/pom.xml b/hudi-integ-test/pom.xml
index 3c19e5ef26..fda492a42f 100644
--- a/hudi-integ-test/pom.xml
+++ b/hudi-integ-test/pom.xml
@@ -165,8 +165,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/hudi-kafka-connect/pom.xml b/hudi-kafka-connect/pom.xml
index 1bfb976503..d903fa4dec 100644
--- a/hudi-kafka-connect/pom.xml
+++ b/hudi-kafka-connect/pom.xml
@@ -171,8 +171,16 @@
 
         <!-- Logging -->
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+            <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-1.2-api</artifactId>
         </dependency>
         
         <!-- Fasterxml -->
diff --git a/hudi-spark-datasource/hudi-spark/pom.xml b/hudi-spark-datasource/hudi-spark/pom.xml
index 1b83cf5eca..b25fea4e52 100644
--- a/hudi-spark-datasource/hudi-spark/pom.xml
+++ b/hudi-spark-datasource/hudi-spark/pom.xml
@@ -256,8 +256,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <!-- Fasterxml -->
diff --git a/hudi-sync/hudi-adb-sync/pom.xml b/hudi-sync/hudi-adb-sync/pom.xml
index dd885b2a18..64df0dbf6a 100644
--- a/hudi-sync/hudi-adb-sync/pom.xml
+++ b/hudi-sync/hudi-adb-sync/pom.xml
@@ -98,8 +98,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/hudi-sync/hudi-datahub-sync/pom.xml b/hudi-sync/hudi-datahub-sync/pom.xml
index 9a4588eda9..68803bbf47 100644
--- a/hudi-sync/hudi-datahub-sync/pom.xml
+++ b/hudi-sync/hudi-datahub-sync/pom.xml
@@ -70,8 +70,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/hudi-sync/hudi-hive-sync/pom.xml b/hudi-sync/hudi-hive-sync/pom.xml
index 111e66b227..6e29f94be0 100644
--- a/hudi-sync/hudi-hive-sync/pom.xml
+++ b/hudi-sync/hudi-hive-sync/pom.xml
@@ -55,8 +55,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/hudi-timeline-service/pom.xml b/hudi-timeline-service/pom.xml
index c360279326..467c84a100 100644
--- a/hudi-timeline-service/pom.xml
+++ b/hudi-timeline-service/pom.xml
@@ -77,8 +77,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <!-- Fasterxml -->
diff --git a/hudi-utilities/pom.xml b/hudi-utilities/pom.xml
index 8fafb06d98..09c04f4caf 100644
--- a/hudi-utilities/pom.xml
+++ b/hudi-utilities/pom.xml
@@ -173,8 +173,16 @@
 
     <!-- Logging -->
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
 
     <dependency>
diff --git a/packaging/hudi-integ-test-bundle/pom.xml b/packaging/hudi-integ-test-bundle/pom.xml
index 962e74739e..bcd695f866 100644
--- a/packaging/hudi-integ-test-bundle/pom.xml
+++ b/packaging/hudi-integ-test-bundle/pom.xml
@@ -644,8 +644,16 @@
     </dependency>
 
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
+      <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-1.2-api</artifactId>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
diff --git a/packaging/hudi-kafka-connect-bundle/pom.xml b/packaging/hudi-kafka-connect-bundle/pom.xml
index 211343dbbc..29eccea0f3 100644
--- a/packaging/hudi-kafka-connect-bundle/pom.xml
+++ b/packaging/hudi-kafka-connect-bundle/pom.xml
@@ -284,8 +284,16 @@
             <scope>compile</scope>
             <exclusions>
                 <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>log4j-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>log4j-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.logging.log4j</groupId>
+                    <artifactId>log4j-1.2-api</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
diff --git a/packaging/hudi-timeline-server-bundle/pom.xml b/packaging/hudi-timeline-server-bundle/pom.xml
index 1472413f1f..d745597801 100644
--- a/packaging/hudi-timeline-server-bundle/pom.xml
+++ b/packaging/hudi-timeline-server-bundle/pom.xml
@@ -44,8 +44,16 @@
 
         <!-- Logging -->
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
+            <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-1.2-api</artifactId>
         </dependency>
 
         <!-- Fasterxml -->
diff --git a/pom.xml b/pom.xml
index e3c8b3e8c6..f5b3413160 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,8 +106,8 @@
     <junit.vintage.version>5.7.2</junit.vintage.version>
     <junit.platform.version>1.7.2</junit.platform.version>
     <mockito.jupiter.version>3.3.3</mockito.jupiter.version>
-    <log4j.version>1.2.17</log4j.version>
     <log4j.test.version>2.17.2</log4j.test.version>
+    <log4j2.version>2.17.2</log4j2.version>
     <slf4j.version>1.7.30</slf4j.version>
     <joda.version>2.9.9</joda.version>
     <hadoop.version>2.10.1</hadoop.version>
@@ -512,9 +512,19 @@
     <dependencies>
       <!-- Logging -->
       <dependency>
-        <groupId>log4j</groupId>
-        <artifactId>log4j</artifactId>
-        <version>${log4j.version}</version>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-api</artifactId>
+        <version>${log4j2.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-core</artifactId>
+        <version>${log4j2.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-1.2-api</artifactId>
+        <version>${log4j2.version}</version>
       </dependency>
 
       <!-- Fasterxml -->