From bfceeb43299ecf6dca95028fc4ea09fecdd8bf8c Mon Sep 17 00:00:00 2001 From: suvrat1629 Date: Thu, 6 Feb 2025 22:54:13 +0530 Subject: [PATCH 1/8] HttpAppender fix and HttpAppenderBuilderTest --- .../appender/HttpAppenderBuilderTest.java | 147 ++++++++++++++++++ .../log4j/core/appender/HttpAppender.java | 26 +++- 2 files changed, 165 insertions(+), 8 deletions(-) create mode 100644 log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java new file mode 100644 index 00000000000..d32ad2ef118 --- /dev/null +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -0,0 +1,147 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.logging.log4j.core.appender; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.DefaultConfiguration; +import org.apache.logging.log4j.core.config.Property; +import org.apache.logging.log4j.core.net.ssl.SslConfiguration; +import org.apache.logging.log4j.core.layout.JsonLayout; +import org.apache.logging.log4j.status.StatusLogger; +import org.apache.logging.log4j.test.ListStatusListener; +import org.apache.logging.log4j.test.junit.UsingStatusListener; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.net.MalformedURLException; +import java.net.URL; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +class HttpAppenderBuilderTest { + + // Mock the LOGGER to verify error logs + private final StatusLogger mockStatusLogger = Mockito.mock(StatusLogger.class); + + private HttpAppender.Builder getBuilder() { + Configuration mockConfig = new DefaultConfiguration(); + return HttpAppender.newBuilder() + .setConfiguration(mockConfig) + .setName("TestHttpAppender"); // Name is required + } + + @Test + @UsingStatusListener + void testBuilderWithoutUrl(final ListStatusListener listener) throws Exception { + // Build the HttpAppender without URL + HttpAppender appender = HttpAppender.newBuilder() + .setConfiguration(new DefaultConfiguration()) + .setName("TestAppender") + .setLayout(JsonLayout.createDefaultLayout()) // Providing a layout here + .build(); + + // Verify that the error message for missing URL is captured + assertThat(listener.findStatusData(Level.ERROR)) + .anyMatch(statusData -> statusData.getMessage().getFormattedMessage().contains("HttpAppender requires URL to be set.")); + } + + @Test + @UsingStatusListener + void testBuilderWithUrlAndWithoutLayout(final ListStatusListener listener) throws Exception { + // Build the HttpAppender with URL but without Layout + HttpAppender appender = HttpAppender.newBuilder() + .setConfiguration(new DefaultConfiguration()) + .setName("TestAppender") + .setUrl(new URL("http://localhost:8080/logs")) // Providing the URL + .build(); + + // Verify that the error message for missing layout is captured + assertThat(listener.findStatusData(Level.ERROR)) + .anyMatch(statusData -> statusData.getMessage().getFormattedMessage().contains("HttpAppender requires a layout to be set.")); + } + + + @Test + void testBuilderWithValidConfiguration() throws Exception { + URL url = new URL("http://example.com"); + Layout layout = JsonLayout.createDefaultLayout(); // Valid layout + + HttpAppender.Builder builder = getBuilder() + .setUrl(url) + .setLayout(layout); + + HttpAppender appender = builder.build(); + assertNotNull(appender, "HttpAppender should be created with valid configuration."); + } + + @Test + void testBuilderWithCustomMethod() throws Exception { + URL url = new URL("http://example.com"); + Layout layout = JsonLayout.createDefaultLayout(); + String customMethod = "PUT"; + + HttpAppender.Builder builder = getBuilder() + .setUrl(url) + .setLayout(layout) + .setMethod(customMethod); + + HttpAppender appender = builder.build(); + assertNotNull(appender, "HttpAppender should be created with a custom HTTP method."); + } + + @Test + void testBuilderWithHeaders() throws Exception { + URL url = new URL("http://example.com"); + Layout layout = JsonLayout.createDefaultLayout(); + Property[] headers = new Property[]{ + Property.createProperty("Header1", "Value1"), + Property.createProperty("Header2", "Value2") + }; + + HttpAppender.Builder builder = getBuilder() + .setUrl(url) + .setLayout(layout) + .setHeaders(headers); + + HttpAppender appender = builder.build(); + assertNotNull(appender, "HttpAppender should be created with headers."); + } + + @Test + void testBuilderWithSslConfiguration() throws Exception { + URL url = new URL("https://example.com"); + Layout layout = JsonLayout.createDefaultLayout(); + SslConfiguration sslConfig = mock(SslConfiguration.class); + + HttpAppender.Builder builder = getBuilder() + .setUrl(url) + .setLayout(layout) + .setSslConfiguration(sslConfig); + + HttpAppender appender = builder.build(); + assertNotNull(appender, "HttpAppender should be created with SSL configuration."); + } + + @Test + void testBuilderWithInvalidUrl() { + assertThrows(MalformedURLException.class, () -> new URL("invalid-url")); + } +} \ No newline at end of file diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java index b24e165b3e1..fd036a4cd72 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java @@ -32,16 +32,15 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement; import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; import org.apache.logging.log4j.core.net.ssl.SslConfiguration; +import org.apache.logging.log4j.status.StatusLogger; -/** - * Sends log events over HTTP. - */ @Plugin(name = "Http", category = Node.CATEGORY, elementType = Appender.ELEMENT_TYPE, printObject = true) public final class HttpAppender extends AbstractAppender { + private static final StatusLogger LOGGER = StatusLogger.getLogger(); + /** * Builds HttpAppender instances. - * @param The type to build */ public static class Builder> extends AbstractAppender.Builder implements org.apache.logging.log4j.core.util.Builder { @@ -70,6 +69,18 @@ public static class Builder> extends AbstractAppender.Build @Override public HttpAppender build() { + // Validate URL presence + if (url == null) { + LOGGER.error("HttpAppender requires URL to be set."); + return null; // Return null if URL is missing + } + + // Validate layout presence + if (getLayout() == null) { + LOGGER.error("HttpAppender requires a layout to be set."); + return null; // Return null if layout is missing + } + final HttpManager httpManager = new HttpURLConnectionManager( getConfiguration(), getConfiguration().getLoggerContext(), @@ -81,10 +92,12 @@ public HttpAppender build() { headers, sslConfiguration, verifyHostname); + return new HttpAppender( getName(), getLayout(), getFilter(), isIgnoreExceptions(), httpManager, getPropertyArray()); } + // Getter and Setter methods public URL getUrl() { return url; } @@ -149,9 +162,6 @@ public B setVerifyHostname(final boolean verifyHostname) { } } - /** - * @return a builder for a HttpAppender. - */ @PluginBuilderFactory public static > B newBuilder() { return new Builder().asBuilder(); @@ -199,4 +209,4 @@ public boolean stop(final long timeout, final TimeUnit timeUnit) { public String toString() { return "HttpAppender{" + "name=" + getName() + ", state=" + getState() + '}'; } -} +} \ No newline at end of file From 0f0448e7d85e8ecd54770a9cfb8d9d2201b05049 Mon Sep 17 00:00:00 2001 From: suvrat1629 Date: Fri, 7 Feb 2025 02:27:29 +0530 Subject: [PATCH 2/8] formatting --- .../appender/HttpAppenderBuilderTest.java | 62 ++++++++----------- .../log4j/core/appender/HttpAppender.java | 2 +- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java index d32ad2ef118..f58216bac03 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -16,26 +16,25 @@ */ package org.apache.logging.log4j.core.appender; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.net.MalformedURLException; +import java.net.URL; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.DefaultConfiguration; import org.apache.logging.log4j.core.config.Property; -import org.apache.logging.log4j.core.net.ssl.SslConfiguration; import org.apache.logging.log4j.core.layout.JsonLayout; +import org.apache.logging.log4j.core.net.ssl.SslConfiguration; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.test.ListStatusListener; import org.apache.logging.log4j.test.junit.UsingStatusListener; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import java.net.MalformedURLException; -import java.net.URL; - -import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - class HttpAppenderBuilderTest { // Mock the LOGGER to verify error logs @@ -43,9 +42,7 @@ class HttpAppenderBuilderTest { private HttpAppender.Builder getBuilder() { Configuration mockConfig = new DefaultConfiguration(); - return HttpAppender.newBuilder() - .setConfiguration(mockConfig) - .setName("TestHttpAppender"); // Name is required + return HttpAppender.newBuilder().setConfiguration(mockConfig).setName("TestHttpAppender"); // Name is required } @Test @@ -55,12 +52,13 @@ void testBuilderWithoutUrl(final ListStatusListener listener) throws Exception { HttpAppender appender = HttpAppender.newBuilder() .setConfiguration(new DefaultConfiguration()) .setName("TestAppender") - .setLayout(JsonLayout.createDefaultLayout()) // Providing a layout here + .setLayout(JsonLayout.createDefaultLayout()) // Providing a layout here .build(); // Verify that the error message for missing URL is captured assertThat(listener.findStatusData(Level.ERROR)) - .anyMatch(statusData -> statusData.getMessage().getFormattedMessage().contains("HttpAppender requires URL to be set.")); + .anyMatch(statusData -> + statusData.getMessage().getFormattedMessage().contains("HttpAppender requires URL to be set.")); } @Test @@ -70,23 +68,22 @@ void testBuilderWithUrlAndWithoutLayout(final ListStatusListener listener) throw HttpAppender appender = HttpAppender.newBuilder() .setConfiguration(new DefaultConfiguration()) .setName("TestAppender") - .setUrl(new URL("http://localhost:8080/logs")) // Providing the URL + .setUrl(new URL("http://localhost:8080/logs")) // Providing the URL .build(); // Verify that the error message for missing layout is captured - assertThat(listener.findStatusData(Level.ERROR)) - .anyMatch(statusData -> statusData.getMessage().getFormattedMessage().contains("HttpAppender requires a layout to be set.")); + assertThat(listener.findStatusData(Level.ERROR)).anyMatch(statusData -> statusData + .getMessage() + .getFormattedMessage() + .contains("HttpAppender requires a layout to be set.")); } - @Test void testBuilderWithValidConfiguration() throws Exception { URL url = new URL("http://example.com"); Layout layout = JsonLayout.createDefaultLayout(); // Valid layout - HttpAppender.Builder builder = getBuilder() - .setUrl(url) - .setLayout(layout); + HttpAppender.Builder builder = getBuilder().setUrl(url).setLayout(layout); HttpAppender appender = builder.build(); assertNotNull(appender, "HttpAppender should be created with valid configuration."); @@ -98,10 +95,8 @@ void testBuilderWithCustomMethod() throws Exception { Layout layout = JsonLayout.createDefaultLayout(); String customMethod = "PUT"; - HttpAppender.Builder builder = getBuilder() - .setUrl(url) - .setLayout(layout) - .setMethod(customMethod); + HttpAppender.Builder builder = + getBuilder().setUrl(url).setLayout(layout).setMethod(customMethod); HttpAppender appender = builder.build(); assertNotNull(appender, "HttpAppender should be created with a custom HTTP method."); @@ -111,15 +106,12 @@ void testBuilderWithCustomMethod() throws Exception { void testBuilderWithHeaders() throws Exception { URL url = new URL("http://example.com"); Layout layout = JsonLayout.createDefaultLayout(); - Property[] headers = new Property[]{ - Property.createProperty("Header1", "Value1"), - Property.createProperty("Header2", "Value2") + Property[] headers = new Property[] { + Property.createProperty("Header1", "Value1"), Property.createProperty("Header2", "Value2") }; - HttpAppender.Builder builder = getBuilder() - .setUrl(url) - .setLayout(layout) - .setHeaders(headers); + HttpAppender.Builder builder = + getBuilder().setUrl(url).setLayout(layout).setHeaders(headers); HttpAppender appender = builder.build(); assertNotNull(appender, "HttpAppender should be created with headers."); @@ -131,10 +123,8 @@ void testBuilderWithSslConfiguration() throws Exception { Layout layout = JsonLayout.createDefaultLayout(); SslConfiguration sslConfig = mock(SslConfiguration.class); - HttpAppender.Builder builder = getBuilder() - .setUrl(url) - .setLayout(layout) - .setSslConfiguration(sslConfig); + HttpAppender.Builder builder = + getBuilder().setUrl(url).setLayout(layout).setSslConfiguration(sslConfig); HttpAppender appender = builder.build(); assertNotNull(appender, "HttpAppender should be created with SSL configuration."); @@ -144,4 +134,4 @@ void testBuilderWithSslConfiguration() throws Exception { void testBuilderWithInvalidUrl() { assertThrows(MalformedURLException.class, () -> new URL("invalid-url")); } -} \ No newline at end of file +} diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java index fd036a4cd72..56d1ffb5e37 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/HttpAppender.java @@ -209,4 +209,4 @@ public boolean stop(final long timeout, final TimeUnit timeUnit) { public String toString() { return "HttpAppender{" + "name=" + getName() + ", state=" + getState() + '}'; } -} \ No newline at end of file +} From ff71db9985dcf0482236e013720ae0c79989115b Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Fri, 7 Feb 2025 12:50:56 +0100 Subject: [PATCH 3/8] Remove wildcard imports --- .../logging/log4j/core/appender/HttpAppenderBuilderTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java index f58216bac03..78e3004a012 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -17,8 +17,9 @@ package org.apache.logging.log4j.core.appender; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; import java.net.MalformedURLException; import java.net.URL; From 9aa1c49a39766b1eaa67beb63e98b2a058a58952 Mon Sep 17 00:00:00 2001 From: suvrat1629 Date: Thu, 13 Feb 2025 17:21:39 +0530 Subject: [PATCH 4/8] removed the mocked StatusLogger --- .../logging/log4j/core/appender/HttpAppenderBuilderTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java index 78e3004a012..8d5f7de7eeb 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -30,17 +30,12 @@ import org.apache.logging.log4j.core.config.Property; import org.apache.logging.log4j.core.layout.JsonLayout; import org.apache.logging.log4j.core.net.ssl.SslConfiguration; -import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.test.ListStatusListener; import org.apache.logging.log4j.test.junit.UsingStatusListener; import org.junit.jupiter.api.Test; -import org.mockito.Mockito; class HttpAppenderBuilderTest { - // Mock the LOGGER to verify error logs - private final StatusLogger mockStatusLogger = Mockito.mock(StatusLogger.class); - private HttpAppender.Builder getBuilder() { Configuration mockConfig = new DefaultConfiguration(); return HttpAppender.newBuilder().setConfiguration(mockConfig).setName("TestHttpAppender"); // Name is required From 28a3817c6dc0f7cf08a3a18f4d8a63d03a4acca6 Mon Sep 17 00:00:00 2001 From: suvrat1629 Date: Thu, 13 Feb 2025 19:00:16 +0530 Subject: [PATCH 5/8] minor change --- .../core/appender/HttpAppenderBuilderTest.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java index 8d5f7de7eeb..0f219af78c3 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -19,7 +19,6 @@ import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.mock; import java.net.MalformedURLException; import java.net.URL; @@ -44,14 +43,12 @@ private HttpAppender.Builder getBuilder() { @Test @UsingStatusListener void testBuilderWithoutUrl(final ListStatusListener listener) throws Exception { - // Build the HttpAppender without URL HttpAppender appender = HttpAppender.newBuilder() .setConfiguration(new DefaultConfiguration()) .setName("TestAppender") .setLayout(JsonLayout.createDefaultLayout()) // Providing a layout here .build(); - // Verify that the error message for missing URL is captured assertThat(listener.findStatusData(Level.ERROR)) .anyMatch(statusData -> statusData.getMessage().getFormattedMessage().contains("HttpAppender requires URL to be set.")); @@ -60,14 +57,12 @@ void testBuilderWithoutUrl(final ListStatusListener listener) throws Exception { @Test @UsingStatusListener void testBuilderWithUrlAndWithoutLayout(final ListStatusListener listener) throws Exception { - // Build the HttpAppender with URL but without Layout HttpAppender appender = HttpAppender.newBuilder() .setConfiguration(new DefaultConfiguration()) .setName("TestAppender") - .setUrl(new URL("http://localhost:8080/logs")) // Providing the URL + .setUrl(new URL("http://localhost:8080/logs")) .build(); - // Verify that the error message for missing layout is captured assertThat(listener.findStatusData(Level.ERROR)).anyMatch(statusData -> statusData .getMessage() .getFormattedMessage() @@ -77,7 +72,7 @@ void testBuilderWithUrlAndWithoutLayout(final ListStatusListener listener) throw @Test void testBuilderWithValidConfiguration() throws Exception { URL url = new URL("http://example.com"); - Layout layout = JsonLayout.createDefaultLayout(); // Valid layout + Layout layout = JsonLayout.createDefaultLayout(); HttpAppender.Builder builder = getBuilder().setUrl(url).setLayout(layout); @@ -117,7 +112,9 @@ void testBuilderWithHeaders() throws Exception { void testBuilderWithSslConfiguration() throws Exception { URL url = new URL("https://example.com"); Layout layout = JsonLayout.createDefaultLayout(); - SslConfiguration sslConfig = mock(SslConfiguration.class); + + // ✅ FIXED: Use real SslConfiguration instead of Mockito mock + SslConfiguration sslConfig = SslConfiguration.createSSLConfiguration(null, null, null, false); HttpAppender.Builder builder = getBuilder().setUrl(url).setLayout(layout).setSslConfiguration(sslConfig); From 0b28893b4804f535ff94c3e019cc11908926e4bd Mon Sep 17 00:00:00 2001 From: Suvrat1629 <140749446+Suvrat1629@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:31:48 +0530 Subject: [PATCH 6/8] Changed some comments --- .../logging/log4j/core/appender/HttpAppenderBuilderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java index 0f219af78c3..19b7b2bb975 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -113,7 +113,7 @@ void testBuilderWithSslConfiguration() throws Exception { URL url = new URL("https://example.com"); Layout layout = JsonLayout.createDefaultLayout(); - // ✅ FIXED: Use real SslConfiguration instead of Mockito mock + //Use real SslConfiguration instead of Mockito mock SslConfiguration sslConfig = SslConfiguration.createSSLConfiguration(null, null, null, false); HttpAppender.Builder builder = From 6cfad6d85a0fc88732123d03daf9ff691939365d Mon Sep 17 00:00:00 2001 From: suvrat1629 Date: Thu, 13 Feb 2025 23:40:33 +0530 Subject: [PATCH 7/8] formatting --- .../logging/log4j/core/appender/HttpAppenderBuilderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java index 19b7b2bb975..2680961d19c 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/HttpAppenderBuilderTest.java @@ -113,7 +113,7 @@ void testBuilderWithSslConfiguration() throws Exception { URL url = new URL("https://example.com"); Layout layout = JsonLayout.createDefaultLayout(); - //Use real SslConfiguration instead of Mockito mock + // Use real SslConfiguration instead of Mockito mock SslConfiguration sslConfig = SslConfiguration.createSSLConfiguration(null, null, null, false); HttpAppender.Builder builder = From 92543519834a075743083d11045628aef342e4af Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Sun, 16 Feb 2025 08:52:50 +0100 Subject: [PATCH 8/8] Add changelog --- src/changelog/.2.x.x/3011_http_appender_validation.xml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/changelog/.2.x.x/3011_http_appender_validation.xml diff --git a/src/changelog/.2.x.x/3011_http_appender_validation.xml b/src/changelog/.2.x.x/3011_http_appender_validation.xml new file mode 100644 index 00000000000..5038a378d17 --- /dev/null +++ b/src/changelog/.2.x.x/3011_http_appender_validation.xml @@ -0,0 +1,8 @@ + + + + Improves validation of HTTP Appender. +