You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2021/12/17 03:37:43 UTC
[logging-log4j2] branch release-2.x updated: [LOG4J2-3237] Log4j 1.2 bridge API hard codes protocol to TCP.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release-2.x by this push:
new 885ca8d [LOG4J2-3237] Log4j 1.2 bridge API hard codes protocol to TCP.
885ca8d is described below
commit 885ca8deb335065323323e78bbb6e52841d884bd
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Dec 16 22:37:36 2021 -0500
[LOG4J2-3237] Log4j 1.2 bridge API hard codes protocol to TCP.
---
.../builders/appender/SyslogAppenderBuilder.java | 15 +++-
.../log4j/config/Log4j1ConfigurationFactory.java | 2 +-
.../log4j/config/PropertiesConfiguration.java | 26 +++----
.../org/apache/log4j/config/PropertySetter.java | 18 ++---
.../java/org/apache/log4j/Log4j1Constants.java | 23 ------
.../org/apache/log4j/config/AsyncAppenderTest.java | 18 ++---
.../org/apache/log4j/config/AutoConfigTest.java | 12 +--
.../config/Log4j1ConfigurationFactoryTest.java | 18 ++---
.../log4j/config/MapRewriteAppenderTest.java | 16 ++--
.../config/PropertiesConfigurationFactoryTest.java | 8 +-
.../log4j/config/PropertiesConfigurationTest.java | 44 ++++-------
.../config/PropertiesReconfigurationTest.java | 26 ++-----
.../PropertiesRollingWithPropertiesTest.java | 17 +----
.../apache/log4j/config/RewriteAppenderTest.java | 14 ++--
.../config/SyslogAppenderConfigurationTest.java | 86 ++++++++++++++++++++++
.../apache/log4j/config/SyslogAppenderTest.java | 6 +-
.../org/apache/log4j/config/TestConfigurator.java | 55 ++++++++++++++
.../log4j/config/XmlConfigurationFactoryTest.java | 7 +-
.../apache/log4j/config/XmlConfigurationTest.java | 41 +++--------
.../log4j/config/XmlReconfigurationTest.java | 27 ++-----
.../log4j1-syslog-protocol-default.properties | 9 +++
.../log4j1-syslog-protocol-tcp.properties | 10 +++
...1-syslog.xml => log4j1-syslog-protocol-tcp.xml} | 3 +-
.../log4j1-syslog-protocol-udp.properties | 10 +++
...1-syslog.xml => log4j1-syslog-protocol-udp.xml} | 3 +-
log4j-1.2-api/src/test/resources/log4j1-syslog.xml | 2 +-
src/changes/changes.xml | 5 +-
27 files changed, 299 insertions(+), 222 deletions(-)
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java
index a438895..f63a622 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java
@@ -62,6 +62,8 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
private static final Logger LOGGER = StatusLogger.getLogger();
private static final String FACILITY_PARAM = "Facility";
private static final String SYSLOG_HOST_PARAM = "SyslogHost";
+ private static final String PROTOCOL_PARAM = "protocol";
+
public SyslogAppenderBuilder() {
}
@@ -78,6 +80,7 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
AtomicReference<String> facility = new AtomicReference<>();
AtomicReference<String> level = new AtomicReference<>();
AtomicReference<String> host = new AtomicReference<>();
+ AtomicReference<Protocol> protocol = new AtomicReference<>();
forEachElement(appenderElement.getChildNodes(), currentElement -> {
switch (currentElement.getTagName()) {
case LAYOUT_TAG:
@@ -104,13 +107,16 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
}
break;
}
+ case PROTOCOL_PARAM:
+ protocol.set(Protocol.valueOf(currentElement.getAttribute(VALUE_ATTR)));
+ break;
}
break;
}
}
});
- return createAppender(name, config, layout.get(), facility.get(), filter.get(), host.get(), level.get());
+ return createAppender(name, config, layout.get(), facility.get(), filter.get(), host.get(), level.get(), protocol.get());
}
@@ -122,12 +128,13 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
String level = getProperty(THRESHOLD_PARAM);
String facility = getProperty(FACILITY_PARAM, DEFAULT_FACILITY);
String syslogHost = getProperty(SYSLOG_HOST_PARAM, DEFAULT_HOST + ":" + DEFAULT_PORT);
+ String protocol = getProperty(PROTOCOL_PARAM, Protocol.TCP.name());
- return createAppender(name, configuration, layout, facility, filter, syslogHost, level);
+ return createAppender(name, configuration, layout, facility, filter, syslogHost, level, Protocol.valueOf(protocol));
}
private Appender createAppender(final String name, final Log4j1Configuration configuration, Layout layout,
- String facility, final Filter filter, final String syslogHost, final String level) {
+ String facility, final Filter filter, final String syslogHost, final String level, final Protocol protocol) {
AtomicReference<String> host = new AtomicReference<>();
AtomicInteger port = new AtomicInteger();
resolveSyslogHost(syslogHost, host, port);
@@ -150,7 +157,7 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu
.setLayout(appenderLayout)
.setFilter(fileFilter)
.withPort(port.get())
- .withProtocol(Protocol.TCP)
+ .withProtocol(protocol)
.withHost(host.get())
.build());
}
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java
index 83f6675..467d88d 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationFactory.java
@@ -37,7 +37,7 @@ import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
// @Order(50)
public class Log4j1ConfigurationFactory extends ConfigurationFactory {
- private static final String[] SUFFIXES = {".properties"};
+ private static final String[] SUFFIXES = { ".properties" };
@Override
public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
index 4be864d..928f883 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java
@@ -16,6 +16,19 @@
*/
package org.apache.log4j.config;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.SortedMap;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
+
import org.apache.log4j.Appender;
import org.apache.log4j.Layout;
import org.apache.log4j.LogManager;
@@ -32,19 +45,6 @@ import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.config.status.StatusConfiguration;
import org.apache.logging.log4j.util.LoaderUtil;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.SortedMap;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-
/**
* Construct a configuration based on Log4j 1 properties.
*/
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertySetter.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertySetter.java
index 5325761..b6cec96 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertySetter.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertySetter.java
@@ -19,15 +19,6 @@
package org.apache.log4j.config;
-import org.apache.log4j.Appender;
-import org.apache.log4j.Level;
-import org.apache.log4j.Priority;
-import org.apache.log4j.spi.ErrorHandler;
-import org.apache.log4j.spi.OptionHandler;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.util.OptionConverter;
-import org.apache.logging.log4j.status.StatusLogger;
-
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
@@ -37,6 +28,15 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
+import org.apache.log4j.Appender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Priority;
+import org.apache.log4j.spi.ErrorHandler;
+import org.apache.log4j.spi.OptionHandler;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.util.OptionConverter;
+import org.apache.logging.log4j.status.StatusLogger;
+
/**
* General purpose Object property setter. Clients repeatedly invokes
* {@link #setProperty setProperty(name,value)} in order to invoke setters
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/Log4j1Constants.java b/log4j-1.2-api/src/test/java/org/apache/log4j/Log4j1Constants.java
deleted file mode 100644
index b4f180d..0000000
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/Log4j1Constants.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.log4j;
-
-public class Log4j1Constants {
-
- public static final String DEFAULT_CONFIGURATION_KEY = "log4j.configuration";
-
-}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/AsyncAppenderTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/AsyncAppenderTest.java
index 1aed46e..8f7d26c 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/AsyncAppenderTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/AsyncAppenderTest.java
@@ -16,6 +16,15 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+
import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
@@ -29,15 +38,6 @@ import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.junit.Test;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from XML.
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/AutoConfigTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/AutoConfigTest.java
index 3e09ab2..f7cccf6 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/AutoConfigTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/AutoConfigTest.java
@@ -16,6 +16,12 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Map;
+
import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
@@ -28,12 +34,6 @@ import org.apache.logging.log4j.spi.LoggerContext;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from XML.
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java
index 7d40a3c..205c876 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/Log4j1ConfigurationFactoryTest.java
@@ -52,6 +52,15 @@ import org.junit.Test;
public class Log4j1ConfigurationFactoryTest {
+ static Configuration getConfiguration(final String configResource) throws URISyntaxException {
+ final URL configLocation = ClassLoader.getSystemResource(configResource);
+ assertNotNull(configResource, configLocation);
+ final Configuration configuration = new Log4j1ConfigurationFactory().getConfiguration(null, "test",
+ configLocation.toURI());
+ assertNotNull(configuration);
+ return configuration;
+ }
+
private Layout<?> testConsole(final String configResource) throws Exception {
final Configuration configuration = getConfiguration(configResource);
final String name = "Console";
@@ -82,15 +91,6 @@ public class Log4j1ConfigurationFactoryTest {
return appender.getLayout();
}
- private Configuration getConfiguration(final String configResource) throws URISyntaxException {
- final URL configLocation = ClassLoader.getSystemResource(configResource);
- assertNotNull(configResource, configLocation);
- final Configuration configuration = new Log4j1ConfigurationFactory().getConfiguration(null, "test",
- configLocation.toURI());
- assertNotNull(configuration);
- return configuration;
- }
-
@Test
public void testConsoleEnhancedPatternLayout() throws Exception {
final PatternLayout layout = (PatternLayout) testConsole(
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/MapRewriteAppenderTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/MapRewriteAppenderTest.java
index 840971a..8983af8 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/MapRewriteAppenderTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/MapRewriteAppenderTest.java
@@ -16,6 +16,14 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
@@ -30,14 +38,6 @@ import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test RewriteAppender
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java
index 22266ba..61523e2 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java
@@ -16,16 +16,16 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.io.File;
-
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from Properties.
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java
index 1c9df9d..7dd768d 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationTest.java
@@ -20,8 +20,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
import java.util.List;
import java.util.Map;
@@ -33,8 +31,6 @@ import org.apache.log4j.spi.LoggingEvent;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.Configurator;
import org.junit.Test;
/**
@@ -43,22 +39,15 @@ import org.junit.Test;
public class PropertiesConfigurationTest {
@Test
- public void testProperties() throws Exception {
- try (LoggerContext loggerContext = configure("target/test-classes/log4j1-file.properties")) {
- Logger logger = LogManager.getLogger("test");
- logger.debug("This is a test of the root logger");
- File file = new File("target/temp.A1");
- assertTrue("File A1 was not created", file.exists());
- assertTrue("File A1 is empty", file.length() > 0);
- file = new File("target/temp.A2");
- assertTrue("File A2 was not created", file.exists());
- assertTrue("File A2 is empty", file.length() > 0);
+ public void testFilter() throws Exception {
+ try (LoggerContext loggerContext = TestConfigurator.configure("target/test-classes/LOG4J2-3247.properties")) {
+ // [LOG4J2-3247] configure() should not throw an NPE.
}
}
@Test
public void testListAppender() throws Exception {
- try (LoggerContext loggerContext = configure("target/test-classes/log4j1-list.properties")) {
+ try (LoggerContext loggerContext = TestConfigurator.configure("target/test-classes/log4j1-list.properties")) {
Logger logger = LogManager.getLogger("test");
logger.debug("This is a test of the root logger");
Configuration configuration = loggerContext.getConfiguration();
@@ -81,22 +70,17 @@ public class PropertiesConfigurationTest {
}
}
- @SuppressWarnings("resource")
- private LoggerContext configure(String configLocation) throws Exception {
- File file = new File(configLocation);
- InputStream is = new FileInputStream(file);
- ConfigurationSource source = new ConfigurationSource(is, file);
- LoggerContext context = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false);
- Configuration configuration = new PropertiesConfigurationFactory().getConfiguration(context, source);
- assertNotNull("No configuration created", configuration);
- Configurator.reconfigure(configuration);
- return context;
- }
-
@Test
- public void testFilter() throws Exception {
- try (LoggerContext loggerContext = configure("target/test-classes/LOG4J2-3247.properties")) {
- // configure() not thrown an NPE.
+ public void testProperties() throws Exception {
+ try (LoggerContext loggerContext = TestConfigurator.configure("target/test-classes/log4j1-file.properties")) {
+ Logger logger = LogManager.getLogger("test");
+ logger.debug("This is a test of the root logger");
+ File file = new File("target/temp.A1");
+ assertTrue("File A1 was not created", file.exists());
+ assertTrue("File A1 is empty", file.length() > 0);
+ file = new File("target/temp.A2");
+ assertTrue("File A2 was not created", file.exists());
+ assertTrue("File A2 is empty", file.length() > 0);
}
}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesReconfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesReconfigurationTest.java
index 13e0035..30ef5b0 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesReconfigurationTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesReconfigurationTest.java
@@ -16,9 +16,11 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -27,16 +29,9 @@ import org.apache.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationListener;
-import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.Reconfigurable;
-import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.junit.Test;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
/**
* Test reconfiguring with an XML configuration.
*/
@@ -54,7 +49,7 @@ public class PropertiesReconfigurationTest {
assertNotNull("No Config file", file);
long configMillis = file.lastModified();
assertTrue("Unable to modified file time", file.setLastModified(configMillis - FIVE_MINUTES));
- LoggerContext context = configure(file);
+ LoggerContext context = TestConfigurator.configure(file.toString());
Logger logger = LogManager.getLogger("test");
logger.info("Hello");
Configuration original = context.getConfiguration();
@@ -81,15 +76,4 @@ public class PropertiesReconfigurationTest {
}
}
-
- private LoggerContext configure(File configFile) throws Exception {
- InputStream is = new FileInputStream(configFile);
- ConfigurationSource source = new ConfigurationSource(is, configFile);
- LoggerContextFactory factory = org.apache.logging.log4j.LogManager.getFactory();
- LoggerContext context = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false);
- Configuration configuration = new PropertiesConfigurationFactory().getConfiguration(context, source);
- assertNotNull("No configuration created", configuration);
- Configurator.reconfigure(configuration);
- return context;
- }
}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesRollingWithPropertiesTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesRollingWithPropertiesTest.java
index 2d84f9e..cdb58a6 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesRollingWithPropertiesTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesRollingWithPropertiesTest.java
@@ -16,28 +16,15 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
-import org.apache.log4j.bridge.AppenderAdapter;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.Configurator;
import org.junit.BeforeClass;
import org.junit.Test;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from Properties.
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/RewriteAppenderTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/RewriteAppenderTest.java
index 7261172..63e2e72 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/RewriteAppenderTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/RewriteAppenderTest.java
@@ -16,6 +16,13 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Map;
+
import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
@@ -30,13 +37,6 @@ import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test RewriteAppender
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderConfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderConfigurationTest.java
new file mode 100644
index 0000000..31faf08
--- /dev/null
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderConfigurationTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.log4j.config;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.appender.SocketAppender;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.net.AbstractSocketManager;
+import org.apache.logging.log4j.core.net.Protocol;
+import org.junit.Test;
+
+/**
+ * Class Description goes here.
+ */
+public class SyslogAppenderConfigurationTest {
+
+ private void checkProtocol(final Protocol expected, final Configuration configuration) {
+ final Map<String, Appender> appenders = configuration.getAppenders();
+ assertNotNull(appenders);
+ final String appenderName = "syslog";
+ final Appender appender = appenders.get(appenderName);
+ assertNotNull(appender, "Missing appender " + appenderName);
+ final SocketAppender socketAppender = (SocketAppender) appender;
+ @SuppressWarnings("resource")
+ final AbstractSocketManager manager = socketAppender.getManager();
+ assertTrue(manager.getName().startsWith(expected + ":"));
+ }
+
+ private void checkProtocolPropertiesConfig(final Protocol expected, final String xmlPath) throws IOException {
+ checkProtocol(expected, TestConfigurator.configure(xmlPath).getConfiguration());
+ }
+
+ private void checkProtocolXmlConfig(final Protocol expected, final String xmlPath) throws IOException {
+ checkProtocol(expected, TestConfigurator.configure(xmlPath).getConfiguration());
+ }
+
+ @Test
+ public void testPropertiesProtocolDefault() throws Exception {
+ checkProtocolPropertiesConfig(Protocol.TCP, "target/test-classes/log4j1-syslog-protocol-default.properties");
+ }
+
+ @Test
+ public void testPropertiesProtocolTcp() throws Exception {
+ checkProtocolPropertiesConfig(Protocol.TCP, "target/test-classes/log4j1-syslog-protocol-tcp.properties");
+ }
+
+ @Test
+ public void testPropertiesProtocolUdp() throws Exception {
+ checkProtocolPropertiesConfig(Protocol.UDP, "target/test-classes/log4j1-syslog-protocol-udp.properties");
+ }
+
+ @Test
+ public void testXmlProtocolDefault() throws Exception {
+ checkProtocolXmlConfig(Protocol.TCP, "target/test-classes/log4j1-syslog.xml");
+ }
+
+ @Test
+ public void testXmlProtocolTcp() throws Exception {
+ checkProtocolXmlConfig(Protocol.TCP, "target/test-classes/log4j1-syslog-protocol-tcp.xml");
+ }
+
+ @Test
+ public void testXmlProtocolUdp() throws Exception {
+ checkProtocolXmlConfig(Protocol.UDP, "target/test-classes/log4j1-syslog-protocol-udp.xml");
+ }
+}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderTest.java
index 4feba91..a6aa013 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/SyslogAppenderTest.java
@@ -22,9 +22,9 @@ import static org.junit.Assert.assertNotNull;
import java.io.IOException;
import java.util.List;
-import org.apache.log4j.Log4j1Constants;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.net.mock.MockSyslogServer;
import org.apache.logging.log4j.core.net.mock.MockSyslogServerFactory;
import org.junit.After;
@@ -43,12 +43,12 @@ public class SyslogAppenderTest {
@BeforeClass
public static void beforeClass() {
- System.setProperty(Log4j1Constants.DEFAULT_CONFIGURATION_KEY, "target/test-classes/log4j1-syslog.xml");
+ System.setProperty(ConfigurationFactory.LOG4J1_CONFIGURATION_FILE_PROPERTY, "target/test-classes/log4j1-syslog.xml");
}
@AfterClass
public static void afterClass() {
- System.clearProperty(Log4j1Constants.DEFAULT_CONFIGURATION_KEY);
+ System.clearProperty(ConfigurationFactory.LOG4J1_CONFIGURATION_FILE_PROPERTY);
}
@After
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/TestConfigurator.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/TestConfigurator.java
new file mode 100644
index 0000000..7cd39af
--- /dev/null
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/TestConfigurator.java
@@ -0,0 +1,55 @@
+/*
+ * 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.log4j.config;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import org.apache.log4j.xml.XmlConfigurationFactory;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.ConfigurationSource;
+import org.apache.logging.log4j.core.config.Configurator;
+
+public class TestConfigurator {
+
+ @SuppressWarnings("resource")
+ static LoggerContext configure(String configLocation) throws IOException {
+ File file = new File(configLocation);
+ InputStream is = Files.newInputStream(Paths.get(configLocation));
+ ConfigurationSource source = new ConfigurationSource(is, file);
+ LoggerContext context = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false);
+ Configuration configuration = null;
+ if (configLocation.endsWith(PropertiesConfigurationFactory.FILE_EXTENSION)) {
+ configuration = new PropertiesConfigurationFactory().getConfiguration(context, source);
+ } else if (configLocation.endsWith(XmlConfigurationFactory.FILE_EXTENSION)) {
+ configuration = new XmlConfigurationFactory().getConfiguration(context, source);
+ } else {
+ fail("Test infra does not support " + configLocation);
+ }
+ assertNotNull("No configuration created", configuration);
+ Configurator.reconfigure(configuration);
+ return context;
+ }
+
+}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java
index b66e4b9..b1c6736 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java
@@ -16,15 +16,16 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.junit.BeforeClass;
import org.junit.Test;
-import java.io.File;
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from XML.
*/
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java
index 950c561..1970f29 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationTest.java
@@ -16,52 +16,31 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
import org.apache.log4j.ListAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.bridge.AppenderAdapter;
import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.xml.XmlConfigurationFactory;
import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.spi.LoggerContextFactory;
+import org.apache.logging.log4j.core.config.Configuration;
import org.junit.Test;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.Map;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
/**
* Test configuration from XML.
*/
public class XmlConfigurationTest {
- static LoggerContext configureXml(final String configLocation) throws IOException {
- final Path path = Paths.get(configLocation);
- final InputStream is = Files.newInputStream(path);
- final ConfigurationSource source = new ConfigurationSource(is, path.toFile());
- final LoggerContextFactory factory = org.apache.logging.log4j.LogManager.getFactory();
- final LoggerContext context = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false);
- final Configuration configuration = new XmlConfigurationFactory().getConfiguration(context, source);
- assertNotNull("No configuration created", configuration);
- Configurator.reconfigure(configuration);
- return context;
- }
-
@Test
public void testListAppender() throws Exception {
- final LoggerContext loggerContext = configureXml("target/test-classes/log4j1-list.xml");
+ final LoggerContext loggerContext = TestConfigurator.configure("target/test-classes/log4j1-list.xml");
final Logger logger = LogManager.getLogger("test");
logger.debug("This is a test of the root logger");
final Configuration configuration = loggerContext.getConfiguration();
@@ -85,7 +64,7 @@ public class XmlConfigurationTest {
@Test
public void testXML() throws Exception {
- configureXml("target/test-classes/log4j1-file.xml");
+ TestConfigurator.configure("target/test-classes/log4j1-file.xml");
final Logger logger = LogManager.getLogger("test");
logger.debug("This is a test of the root logger");
File file = new File("target/temp.A1");
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlReconfigurationTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlReconfigurationTest.java
index e657f0c..6c77877 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlReconfigurationTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlReconfigurationTest.java
@@ -16,28 +16,22 @@
*/
package org.apache.log4j.config;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
-import org.apache.log4j.xml.XmlConfigurationFactory;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationListener;
-import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.Reconfigurable;
-import org.apache.logging.log4j.spi.LoggerContextFactory;
import org.junit.Test;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
/**
* Test reconfiguring with an XML configuration.
*/
@@ -55,7 +49,7 @@ public class XmlReconfigurationTest {
assertNotNull("No Config file", file);
long configMillis = file.lastModified();
assertTrue("Unable to modified file time", file.setLastModified(configMillis - FIVE_MINUTES));
- LoggerContext context = configure(file);
+ LoggerContext context = TestConfigurator.configure(file.toString());
Logger logger = LogManager.getLogger("test");
logger.info("Hello");
Configuration original = context.getConfiguration();
@@ -82,15 +76,4 @@ public class XmlReconfigurationTest {
}
}
-
- private LoggerContext configure(File configFile) throws Exception {
- InputStream is = new FileInputStream(configFile);
- ConfigurationSource source = new ConfigurationSource(is, configFile);
- LoggerContextFactory factory = org.apache.logging.log4j.LogManager.getFactory();
- LoggerContext context = (LoggerContext) org.apache.logging.log4j.LogManager.getContext(false);
- Configuration configuration = new XmlConfigurationFactory().getConfiguration(context, source);
- assertNotNull("No configuration created", configuration);
- Configurator.reconfigure(configuration);
- return context;
- }
}
diff --git a/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-default.properties b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-default.properties
new file mode 100644
index 0000000..5501074
--- /dev/null
+++ b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-default.properties
@@ -0,0 +1,9 @@
+log4j.rootLogger=DEBUG,syslog
+log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
+log4j.appender.syslog.Threshold=DEBUG
+log4j.appender.syslog.syslogHost=localhost
+log4j.appender.syslog.port=9999
+log4j.appender.syslog.header=true
+log4j.appender.syslog.Facility=LOCAL3
+log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
+log4j.appender.syslog.layout.conversionPattern=Main[%pid] :%t: %c %-4p - %m\n
diff --git a/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-tcp.properties b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-tcp.properties
new file mode 100644
index 0000000..2b6b704
--- /dev/null
+++ b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-tcp.properties
@@ -0,0 +1,10 @@
+log4j.rootLogger=DEBUG,syslog
+log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
+log4j.appender.syslog.Threshold=DEBUG
+log4j.appender.syslog.syslogHost=localhost
+log4j.appender.syslog.port=9999
+log4j.appender.syslog.protocol=TCP
+log4j.appender.syslog.header=true
+log4j.appender.syslog.Facility=LOCAL3
+log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
+log4j.appender.syslog.layout.conversionPattern=Main[%pid] :%t: %c %-4p - %m\n
diff --git a/log4j-1.2-api/src/test/resources/log4j1-syslog.xml b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-tcp.xml
similarity index 95%
copy from log4j-1.2-api/src/test/resources/log4j1-syslog.xml
copy to log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-tcp.xml
index 4fd96a8..47c3768 100644
--- a/log4j-1.2-api/src/test/resources/log4j1-syslog.xml
+++ b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-tcp.xml
@@ -23,6 +23,7 @@
<param name="Facility" value="USER"/>
<param name="FacilityPrinting" value="true"/>
<param name="Threshold" value="DEBUG"/>
+ <param name="protocol" value="TCP"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
@@ -33,4 +34,4 @@
<appender-ref ref="syslog" />
</root>
-</log4j:configuration>
\ No newline at end of file
+</log4j:configuration>
diff --git a/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-udp.properties b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-udp.properties
new file mode 100644
index 0000000..1735ade
--- /dev/null
+++ b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-udp.properties
@@ -0,0 +1,10 @@
+log4j.rootLogger=DEBUG,syslog
+log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
+log4j.appender.syslog.Threshold=DEBUG
+log4j.appender.syslog.syslogHost=localhost
+log4j.appender.syslog.port=9999
+log4j.appender.syslog.protocol=UDP
+log4j.appender.syslog.header=true
+log4j.appender.syslog.Facility=LOCAL3
+log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
+log4j.appender.syslog.layout.conversionPattern=Main[%pid] :%t: %c %-4p - %m\n
diff --git a/log4j-1.2-api/src/test/resources/log4j1-syslog.xml b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-udp.xml
similarity index 95%
copy from log4j-1.2-api/src/test/resources/log4j1-syslog.xml
copy to log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-udp.xml
index 4fd96a8..279ec94 100644
--- a/log4j-1.2-api/src/test/resources/log4j1-syslog.xml
+++ b/log4j-1.2-api/src/test/resources/log4j1-syslog-protocol-udp.xml
@@ -23,6 +23,7 @@
<param name="Facility" value="USER"/>
<param name="FacilityPrinting" value="true"/>
<param name="Threshold" value="DEBUG"/>
+ <param name="protocol" value="UDP"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
@@ -33,4 +34,4 @@
<appender-ref ref="syslog" />
</root>
-</log4j:configuration>
\ No newline at end of file
+</log4j:configuration>
diff --git a/log4j-1.2-api/src/test/resources/log4j1-syslog.xml b/log4j-1.2-api/src/test/resources/log4j1-syslog.xml
index 4fd96a8..5b7021c 100644
--- a/log4j-1.2-api/src/test/resources/log4j1-syslog.xml
+++ b/log4j-1.2-api/src/test/resources/log4j1-syslog.xml
@@ -33,4 +33,4 @@
<appender-ref ref="syslog" />
</root>
-</log4j:configuration>
\ No newline at end of file
+</log4j:configuration>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 57ae381..f54e627 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -29,7 +29,7 @@
- "update" - Change
- "remove" - Removed
-->
- <release version="2.16.1" date="2021-MM-dd" description="GA Release 2.16.1">
+ <release version="2.17.0" date="2021-MM-dd" description="GA Release 2.17.0">
<action issue="LOG4J2-3242" dev="rgoers" type="fix">
Limit JNDI to the java protocol only. JNDI will remain disabled by default. The enablement
property has been renamed to 'log4j2.enableJndiJava'
@@ -44,6 +44,9 @@
<action issue="LOG4J2-3249" dev="ggregory" type="fix">
Log4j 1.2 bridge for Syslog Appender defaults to port 512 instead of 514.
</action>
+ <action issue="LOG4J2-3237" dev="ggregory" type="fix">
+ Log4j 1.2 bridge API hard codes protocol to TCP.
+ </action>
</release>
<release version="2.16.0" date="2021-12-13" description="GA Release 2.16.0">
<action issue="LOG4J2-3208" dev="rgoers" type="fix">