diff --git a/hudi-aws/pom.xml b/hudi-aws/pom.xml index dc9653a62f916..03ee1d8539cef 100644 --- a/hudi-aws/pom.xml +++ b/hudi-aws/pom.xml @@ -48,8 +48,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-cli/pom.xml b/hudi-cli/pom.xml index e3111f3fb9a0c..663c1a7bcdf7d 100644 --- a/hudi-cli/pom.xml +++ b/hudi-cli/pom.xml @@ -201,8 +201,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-client/hudi-client-common/pom.xml b/hudi-client/hudi-client-common/pom.xml index ddfd4a2fd584d..f764f9f3ae8eb 100644 --- a/hudi-client/hudi-client-common/pom.xml +++ b/hudi-client/hudi-client-common/pom.xml @@ -55,8 +55,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api 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 6d1059cb98da8..568204f65588b 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.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 b0912aaaabfe2..b3b1bcb8f7866 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.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 a388aecda0ae4..b67252a729593 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.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 0ab6f32dc5de4..8d3d00d572486 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.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 @@ public class TestCallbackHttpClient { @Mock - AppenderSkeleton appender; + Appender appender; @Captor - ArgumentCaptor logCaptor; + ArgumentCaptor 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 @@ private void mockResponse(int statusCode) { @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 void sendPayloadShouldLogUnsuccessfulSending() { 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 642c46bafb60a..ebc46db00dabd 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.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 @@ public class TestDatadogHttpClient { @Mock - AppenderSkeleton appender; + Appender appender; @Captor - ArgumentCaptor logCaptor; + ArgumentCaptor 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 void validateApiKeyShouldThrowExceptionWhenResponseNotSuccessful() { @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 607cce9ee8c93..838b97c493fb3 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 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.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 logCaptor; + ArgumentCaptor 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 void stopShouldCloseEnclosedClient() throws IOException { @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 8c4f54f047f2a..4dd2fceb9da27 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 - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-integ-test/pom.xml b/hudi-integ-test/pom.xml index 3c19e5ef261b3..fda492a42f667 100644 --- a/hudi-integ-test/pom.xml +++ b/hudi-integ-test/pom.xml @@ -165,8 +165,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-kafka-connect/pom.xml b/hudi-kafka-connect/pom.xml index 1bfb9765035e6..d903fa4dec681 100644 --- a/hudi-kafka-connect/pom.xml +++ b/hudi-kafka-connect/pom.xml @@ -171,8 +171,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-spark-datasource/hudi-spark/pom.xml b/hudi-spark-datasource/hudi-spark/pom.xml index 1b83cf5eca662..b25fea4e52c87 100644 --- a/hudi-spark-datasource/hudi-spark/pom.xml +++ b/hudi-spark-datasource/hudi-spark/pom.xml @@ -256,8 +256,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-sync/hudi-adb-sync/pom.xml b/hudi-sync/hudi-adb-sync/pom.xml index 0a01ffd61a6d6..fb2ce66e3f12e 100644 --- a/hudi-sync/hudi-adb-sync/pom.xml +++ b/hudi-sync/hudi-adb-sync/pom.xml @@ -98,8 +98,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-sync/hudi-datahub-sync/pom.xml b/hudi-sync/hudi-datahub-sync/pom.xml index 9a4588eda974e..68803bbf47a11 100644 --- a/hudi-sync/hudi-datahub-sync/pom.xml +++ b/hudi-sync/hudi-datahub-sync/pom.xml @@ -70,8 +70,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-sync/hudi-hive-sync/pom.xml b/hudi-sync/hudi-hive-sync/pom.xml index 111e66b227563..6e29f94be0058 100644 --- a/hudi-sync/hudi-hive-sync/pom.xml +++ b/hudi-sync/hudi-hive-sync/pom.xml @@ -55,8 +55,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-timeline-service/pom.xml b/hudi-timeline-service/pom.xml index c360279326c02..467c84a1002fb 100644 --- a/hudi-timeline-service/pom.xml +++ b/hudi-timeline-service/pom.xml @@ -77,8 +77,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/hudi-utilities/pom.xml b/hudi-utilities/pom.xml index 8fafb06d98ddf..09c04f4caf976 100644 --- a/hudi-utilities/pom.xml +++ b/hudi-utilities/pom.xml @@ -173,8 +173,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/packaging/hudi-integ-test-bundle/pom.xml b/packaging/hudi-integ-test-bundle/pom.xml index 962e74739e15e..bcd695f866aa8 100644 --- a/packaging/hudi-integ-test-bundle/pom.xml +++ b/packaging/hudi-integ-test-bundle/pom.xml @@ -644,8 +644,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api org.slf4j diff --git a/packaging/hudi-kafka-connect-bundle/pom.xml b/packaging/hudi-kafka-connect-bundle/pom.xml index 211343dbbcbad..29eccea0f3f0f 100644 --- a/packaging/hudi-kafka-connect-bundle/pom.xml +++ b/packaging/hudi-kafka-connect-bundle/pom.xml @@ -284,8 +284,16 @@ compile - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/packaging/hudi-timeline-server-bundle/pom.xml b/packaging/hudi-timeline-server-bundle/pom.xml index 1472413f1ffcd..d745597801466 100644 --- a/packaging/hudi-timeline-server-bundle/pom.xml +++ b/packaging/hudi-timeline-server-bundle/pom.xml @@ -44,8 +44,16 @@ - log4j - log4j + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-1.2-api diff --git a/pom.xml b/pom.xml index e3c8b3e8c6f17..f5b3413160bd1 100644 --- a/pom.xml +++ b/pom.xml @@ -106,8 +106,8 @@ 5.7.2 1.7.2 3.3.3 - 1.2.17 2.17.2 + 2.17.2 1.7.30 2.9.9 2.10.1 @@ -512,9 +512,19 @@ - log4j - log4j - ${log4j.version} + org.apache.logging.log4j + log4j-api + ${log4j2.version} + + + org.apache.logging.log4j + log4j-core + ${log4j2.version} + + + org.apache.logging.log4j + log4j-1.2-api + ${log4j2.version}