- [LOG4J2-895] Specify the SyslogAppender connect timeout value as part - [LOG4J2-899] Specify the SocketAppender connect timeout value as part of the configuration.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3cdbbedd Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3cdbbedd Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3cdbbedd Branch: refs/heads/master Commit: 3cdbbeddf19137d20fa6527d6620e88afcecb7f9 Parents: d2c5264 Author: Gary Gregory <[email protected]> Authored: Tue Nov 18 00:59:17 2014 -0500 Committer: Gary Gregory <[email protected]> Committed: Tue Nov 18 00:59:17 2014 -0500 ---------------------------------------------------------------------- .../log4j/core/appender/SocketAppender.java | 21 +++++----- .../log4j/core/appender/SyslogAppender.java | 10 +++-- .../log4j/core/net/SslSocketManager.java | 39 ++++++++++-------- .../log4j/core/net/TcpSocketManager.java | 42 ++++++++++++++------ .../log4j/core/appender/SocketAppenderTest.java | 20 +++++----- .../log4j/core/appender/SyslogAppenderTest.java | 6 +-- .../core/appender/TlsSyslogAppenderTest.java | 6 +-- .../net/server/AbstractSocketServerTest.java | 4 +- .../core/net/server/SslXmlSocketServerTest.java | 4 +- src/changes/changes.xml | 10 ++++- src/site/xdoc/manual/appenders.xml | 12 ++++++ 11 files changed, 109 insertions(+), 65 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java index 49a9bcb..2c59ad3 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java @@ -83,6 +83,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM * The Protocol to use. * @param sslConfig * The SSL configuration file for TCP/SSL, ignored for UPD. + * @param connectTimeoutMillis TODO * @param delayMillis * The interval in which failed writes should be retried. * @param immediateFail @@ -111,6 +112,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM @PluginAttribute("port") final String portNum, @PluginAttribute("protocol") final String protocolStr, @PluginElement("SSL") final SslConfiguration sslConfig, + @PluginAttribute(value = "connectTimeoutMillis", defaultInt = 0) final int connectTimeoutMillis, @PluginAliases("reconnectionDelay") // deprecated @PluginAttribute("reconnectionDelayMillis") final String delayMillis, @PluginAttribute("immediateFail") final String immediateFail, @@ -118,9 +120,8 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM @PluginAttribute("immediateFlush") final String immediateFlush, @PluginAttribute("ignoreExceptions") final String ignore, @PluginElement("Layout") Layout<? extends Serializable> layout, - @PluginElement("Filter") final Filter filter, - @PluginAttribute("advertise") final String advertise, - @PluginConfiguration final Configuration config) { + @PluginElement("Filter") final Filter filter, + @PluginAttribute("advertise") final String advertise, @PluginConfiguration final Configuration config) { // @formatter:on boolean isFlush = Booleans.parseBoolean(immediateFlush, true); final boolean isAdvertise = Boolean.parseBoolean(advertise); @@ -143,8 +144,8 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM isFlush = true; } - final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, sslConfig, - reconnectDelayMillis, fail, layout); + final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, connectTimeoutMillis, + sslConfig, reconnectDelayMillis, fail, layout); return new SocketAppender(name, layout, filter, manager, ignoreExceptions, isFlush, isAdvertise ? config.getAdvertiser() : null); @@ -157,8 +158,8 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM * if the protocol cannot be handled. */ protected static AbstractSocketManager createSocketManager(final String name, Protocol protocol, final String host, - final int port, final SslConfiguration sslConfig, final int delayMillis, final boolean immediateFail, - final Layout<? extends Serializable> layout) { + final int port, int connectTimeoutMillis, final SslConfiguration sslConfig, final int delayMillis, + final boolean immediateFail, final Layout<? extends Serializable> layout) { if (protocol == Protocol.TCP && sslConfig != null) { // Upgrade TCP to SSL if an SSL config is specified. protocol = Protocol.SSL; @@ -168,11 +169,13 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM } switch (protocol) { case TCP: - return TcpSocketManager.getSocketManager(host, port, delayMillis, immediateFail, layout); + return TcpSocketManager.getSocketManager(host, port, connectTimeoutMillis, delayMillis, immediateFail, + layout); case UDP: return DatagramSocketManager.getSocketManager(host, port, layout); case SSL: - return SslSocketManager.getSocketManager(sslConfig, host, port, delayMillis, immediateFail, layout); + return SslSocketManager.getSocketManager(sslConfig, host, port, connectTimeoutMillis, delayMillis, + immediateFail, layout); default: throw new IllegalArgumentException(protocol.toString()); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java index 38201ab..391accd 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java @@ -60,6 +60,7 @@ public class SyslogAppender extends SocketAppender { * @param port The port to connect to on the target host. * @param protocolStr The Protocol to use. * @param sslConfig TODO + * @param connectTimeoutMillis TODO * @param reconnectionDelayMillis The interval in which failed writes should be retried. * @param immediateFail True if the write should fail if no socket is immediately available. * @param name The name of the Appender. @@ -89,6 +90,7 @@ public class SyslogAppender extends SocketAppender { * @param exceptionPattern The converter pattern to use for formatting exceptions. * @param loggerFields The logger fields * @param advertise Whether to advertise + * @param connectTimeoutMillis the connect timeout in milliseconds. * @return A SyslogAppender. */ @PluginFactory @@ -98,6 +100,7 @@ public class SyslogAppender extends SocketAppender { @PluginAttribute(value = "port", defaultInt = 0) final int port, @PluginAttribute("protocol") final String protocolStr, @PluginElement("SSL") final SslConfiguration sslConfig, + @PluginAttribute(value = "connectTimeoutMillis", defaultInt = 0) final int connectTimeoutMillis, @PluginAliases("reconnectionDelay") // deprecated @PluginAttribute(value = "reconnectionDelayMillis", defaultInt = 0) final int reconnectionDelayMillis, @PluginAttribute(value = "immediateFail", defaultBoolean = true) final boolean immediateFail, @@ -123,8 +126,7 @@ public class SyslogAppender extends SocketAppender { @PluginConfiguration final Configuration config, @PluginAttribute(value = "charset", defaultString = "UTF-8") final Charset charsetName, @PluginAttribute("exceptionPattern") final String exceptionPattern, - @PluginElement("LoggerFields") final LoggerFields[] loggerFields, - @PluginAttribute(value = "advertise", defaultBoolean = false) final boolean advertise) { + @PluginElement("LoggerFields") final LoggerFields[] loggerFields, @PluginAttribute(value = "advertise", defaultBoolean = false) final boolean advertise) { // @formatter:on // TODO: add Protocol to TypeConverters @@ -140,8 +142,8 @@ public class SyslogAppender extends SocketAppender { LOGGER.error("No name provided for SyslogAppender"); return null; } - final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, sslConfig, - reconnectionDelayMillis, immediateFail, layout); + final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, connectTimeoutMillis, + sslConfig, reconnectionDelayMillis, immediateFail, layout); return new SyslogAppender(name, layout, filter, ignoreExceptions, immediateFlush, manager, advertise ? config.getAdvertiser() : null); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java index d9a43db..87e7867 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.Serializable; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; @@ -50,13 +51,16 @@ public class SslSocketManager extends TcpSocketManager { * @param inetAddress The Internet address of the host. * @param host The name of the host. * @param port The port number on the host. + * @param connectTimeoutMillis the connect timeout in milliseconds. * @param delay Reconnection interval. * @param immediateFail * @param layout The Layout. */ - public SslSocketManager(final String name, final OutputStream os, final Socket sock, final SslConfiguration sslConfig, final InetAddress inetAddress, - final String host, final int port, final int delay, final boolean immediateFail, final Layout<? extends Serializable> layout) { - super(name, os, sock, inetAddress, host, port, delay, immediateFail, layout); + public SslSocketManager(final String name, final OutputStream os, final Socket sock, + final SslConfiguration sslConfig, final InetAddress inetAddress, final String host, final int port, + int connectTimeoutMillis, final int delay, final boolean immediateFail, + final Layout<? extends Serializable> layout) { + super(name, os, sock, inetAddress, host, port, connectTimeoutMillis, delay, immediateFail, layout); this.sslConfig = sslConfig; } @@ -64,14 +68,17 @@ public class SslSocketManager extends TcpSocketManager { protected SslConfiguration sslConfig; private final String host; private final int port; + private final int connectTimeoutMillis; private final int delayMillis; private final boolean immediateFail; private final Layout<? extends Serializable> layout; - public SslFactoryData(final SslConfiguration sslConfig, final String host, final int port, final int delayMillis, final boolean immediateFail, - final Layout<? extends Serializable> layout) { + public SslFactoryData(final SslConfiguration sslConfig, final String host, final int port, + int connectTimeoutMillis, final int delayMillis, final boolean immediateFail, + final Layout<? extends Serializable> layout) { this.host = host; this.port = port; + this.connectTimeoutMillis = connectTimeoutMillis; this.delayMillis = delayMillis; this.immediateFail = immediateFail; this.layout = layout; @@ -80,7 +87,8 @@ public class SslSocketManager extends TcpSocketManager { } public static SslSocketManager getSocketManager(final SslConfiguration sslConfig, final String host, int port, - int delayMillis, final boolean immediateFail, final Layout<? extends Serializable> layout ) { + int connectTimeoutMillis, int delayMillis, final boolean immediateFail, + final Layout<? extends Serializable> layout) { if (Strings.isEmpty(host)) { throw new IllegalArgumentException("A host name is required"); } @@ -90,14 +98,17 @@ public class SslSocketManager extends TcpSocketManager { if (delayMillis == 0) { delayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS; } - return (SslSocketManager) getManager("TLS:" + host + ':' + port, - new SslFactoryData(sslConfig, host, port, delayMillis, immediateFail, layout), FACTORY); + return (SslSocketManager) getManager("TLS:" + host + ':' + port, new SslFactoryData(sslConfig, host, port, + connectTimeoutMillis, delayMillis, immediateFail, layout), FACTORY); } @Override protected Socket createSocket(final String host, final int port) throws IOException { final SSLSocketFactory socketFactory = createSslSocketFactory(sslConfig); - return socketFactory.createSocket(host, port); + final InetSocketAddress address = new InetSocketAddress(host, port); + final Socket newSocket = socketFactory.createSocket(); + newSocket.connect(address, getConnectTimeoutMillis()); + return newSocket; } private static SSLSocketFactory createSslSocketFactory(final SslConfiguration sslConf) { @@ -140,7 +151,8 @@ public class SslSocketManager extends TcpSocketManager { LOGGER.catching(Level.DEBUG, e); return null; } - return createManager(name, os, socket, data.sslConfig, inetAddress, data.host, data.port, data.delayMillis, data.immediateFail, data.layout); + return new SslSocketManager(name, os, socket, data.sslConfig, inetAddress, data.host, data.port, 0, + data.delayMillis, data.immediateFail, data.layout); } private InetAddress resolveAddress(final String hostName) throws TlsSocketManagerFactoryException { @@ -170,12 +182,5 @@ public class SslSocketManager extends TcpSocketManager { socket = (SSLSocket) socketFactory.createSocket(data.host, data.port); return socket; } - - private SslSocketManager createManager(final String name, final OutputStream os, final Socket socket, - final SslConfiguration sslConfig, final InetAddress inetAddress, final String host, final int port, - final int delay, final boolean immediateFail, final Layout<? extends Serializable> layout) { - return new SslSocketManager(name, os, socket, sslConfig, inetAddress, host, port, delay, immediateFail, - layout); - } } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java index c5c8397..9ab9f5f 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java @@ -22,6 +22,7 @@ import java.io.OutputStream; import java.io.Serializable; import java.net.ConnectException; import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.HashMap; @@ -58,6 +59,8 @@ public class TcpSocketManager extends AbstractSocketManager { private final boolean retry; private final boolean immediateFail; + + private final int connectTimeoutMillis; /** * The Constructor. @@ -67,14 +70,16 @@ public class TcpSocketManager extends AbstractSocketManager { * @param inetAddress The Internet address of the host. * @param host The name of the host. * @param port The port number on the host. + * @param connectTimeoutMillis the connect timeout in milliseconds. * @param delay Reconnection interval. * @param immediateFail * @param layout The Layout. */ public TcpSocketManager(final String name, final OutputStream os, final Socket sock, final InetAddress inetAddress, - final String host, final int port, final int delay, final boolean immediateFail, - final Layout<? extends Serializable> layout) { + final String host, final int port, int connectTimeoutMillis, final int delay, + final boolean immediateFail, final Layout<? extends Serializable> layout) { super(name, os, inetAddress, host, port, layout); + this.connectTimeoutMillis = connectTimeoutMillis; this.reconnectionDelay = delay; this.socket = sock; this.immediateFail = immediateFail; @@ -91,11 +96,12 @@ public class TcpSocketManager extends AbstractSocketManager { * Obtain a TcpSocketManager. * @param host The host to connect to. * @param port The port on the host. + * @param connectTimeoutMillis the connect timeout in milliseconds * @param delayMillis The interval to pause between retries. * @return A TcpSocketManager. */ - public static TcpSocketManager getSocketManager(final String host, int port, int delayMillis, - final boolean immediateFail, final Layout<? extends Serializable> layout ) { + public static TcpSocketManager getSocketManager(final String host, int port, int connectTimeoutMillis, + int delayMillis, final boolean immediateFail, final Layout<? extends Serializable> layout) { if (Strings.isEmpty(host)) { throw new IllegalArgumentException("A host name is required"); } @@ -105,8 +111,8 @@ public class TcpSocketManager extends AbstractSocketManager { if (delayMillis == 0) { delayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS; } - return (TcpSocketManager) getManager("TCP:" + host + ':' + port, - new FactoryData(host, port, delayMillis, immediateFail, layout), FACTORY); + return (TcpSocketManager) getManager("TCP:" + host + ':' + port, new FactoryData(host, port, + connectTimeoutMillis, delayMillis, immediateFail, layout), FACTORY); } @Override @@ -146,6 +152,10 @@ public class TcpSocketManager extends AbstractSocketManager { } } + public int getConnectTimeoutMillis() { + return connectTimeoutMillis; + } + /** * Gets this TcpSocketManager's content format. Specified by: * <ul> @@ -228,7 +238,10 @@ public class TcpSocketManager extends AbstractSocketManager { } protected Socket createSocket(final String host, final int port) throws IOException { - return new Socket(host, port); + final InetSocketAddress address = new InetSocketAddress(host, port); + final Socket newSocket = new Socket(); + newSocket.connect(address, connectTimeoutMillis); + return newSocket; } /** @@ -237,14 +250,16 @@ public class TcpSocketManager extends AbstractSocketManager { private static class FactoryData { private final String host; private final int port; + private final int connectTimeoutMillis; private final int delayMillis; private final boolean immediateFail; private final Layout<? extends Serializable> layout; - public FactoryData(final String host, final int port, final int delayMillis, final boolean immediateFail, - final Layout<? extends Serializable> layout) { + public FactoryData(final String host, final int port, int connectTimeoutMillis, final int delayMillis, + final boolean immediateFail, final Layout<? extends Serializable> layout) { this.host = host; this.port = port; + this.connectTimeoutMillis = connectTimeoutMillis; this.delayMillis = delayMillis; this.immediateFail = immediateFail; this.layout = layout; @@ -269,8 +284,8 @@ public class TcpSocketManager extends AbstractSocketManager { try { final Socket socket = new Socket(data.host, data.port); os = socket.getOutputStream(); - return new TcpSocketManager(name, os, socket, inetAddress, data.host, data.port, data.delayMillis, - data.immediateFail, data.layout); + return new TcpSocketManager(name, os, socket, inetAddress, data.host, data.port, + data.connectTimeoutMillis, data.delayMillis, data.immediateFail, data.layout); } catch (final IOException ex) { LOGGER.error("TcpSocketManager (" + name + ") " + ex); os = new ByteArrayOutputStream(); @@ -278,8 +293,9 @@ public class TcpSocketManager extends AbstractSocketManager { if (data.delayMillis == 0) { return null; } - return new TcpSocketManager(name, os, null, inetAddress, data.host, data.port, data.delayMillis, data.immediateFail, - data.layout); + return new TcpSocketManager(name, os, null, inetAddress, data.host, data.port, data.connectTimeoutMillis, + data.delayMillis, data.immediateFail, data.layout); } } + } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java index c11020f..bd6fd61 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java @@ -104,8 +104,8 @@ public class SocketAppenderTest { @Test public void testTcpAppender() throws Exception { - final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, "tcp", null, "-1", "false", - "Test", null, null, null, null, null, null); + final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, "tcp", null, 0, "-1", + "false", "Test", null, null, null, null, null, null); appender.start(); // set appender on root and set level to debug @@ -144,16 +144,16 @@ public class SocketAppenderTest { @Test public void testDefaultProtocol() throws Exception { - final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, null, null, "-1", "false", - "Test", null, null, null, null, null, null); + final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, null, null, 0, "-1", + "false", "Test", null, null, null, null, null, null); assertNotNull(appender); } @Test public void testUdpAppender() throws Exception { - final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, "udp", null, "-1", "false", - "Test", null, null, null, null, null, null); + final SocketAppender appender = SocketAppender.createAppender("localhost", PORT, "udp", null, 0, "-1", + "false", "Test", null, null, null, null, null, null); appender.start(); // set appender on root and set level to debug @@ -170,8 +170,8 @@ public class SocketAppenderTest { @Test public void testTcpAppenderDeadlock() throws Exception { - final SocketAppender appender = SocketAppender.createAppender("localhost", DYN_PORT, "tcp", null, "100", - "false", "Test", null, null, null, null, null, null); + final SocketAppender appender = SocketAppender.createAppender("localhost", DYN_PORT, "tcp", null, 0, + "100", "false", "Test", null, null, null, null, null, null); appender.start(); // set appender on root and set level to debug root.addAppender(appender); @@ -189,8 +189,8 @@ public class SocketAppenderTest { @Test public void testTcpAppenderNoWait() throws Exception { - final SocketAppender appender = SocketAppender.createAppender("localhost", ERROR_PORT, "tcp", null, "100", - "true", "Test", null, "false", null, null, null, null); + final SocketAppender appender = SocketAppender.createAppender("localhost", ERROR_PORT, "tcp", null, 0, + "100", "true", "Test", null, "false", null, null, null, null); appender.start(); // set appender on root and set level to debug root.addAppender(appender); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java index 3ca7b91..03b5807 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java @@ -107,8 +107,8 @@ public class SyslogAppenderTest extends SyslogAppenderTestBase { } private SyslogAppender createAppender(final String protocol, final String format) { - return SyslogAppender.createAppender("localhost", PORTNUM, protocol, null, -1, true, "Test", true, false, - Facility.LOCAL0, "Audit", 18060, true, "RequestContext", null, null, includeNewLine, null, "TestApp", - "Test", null, "ipAddress,loginId", null, format, null, null, null, null, null, false); + return SyslogAppender.createAppender("localhost", PORTNUM, protocol, null, 0, -1, true, "Test", true, + false, Facility.LOCAL0, "Audit", 18060, true, "RequestContext", null, null, includeNewLine, null, + "TestApp", "Test", null, "ipAddress,loginId", null, format, null, null, null, null, null, false); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java index 198f261..27977f5 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogAppenderTest.java @@ -95,9 +95,9 @@ public class TlsSyslogAppenderTest extends SyslogAppenderTest { format = "RFC5424"; } - return SyslogAppender.createAppender("localhost", PORTNUM, "SSL", sslConfig, -1, true, "Test", true, false, - Facility.LOCAL0, "Audit", 18060, true, "RequestContext", null, null, includeNewLine, null, "TestApp", - "Test", null, "ipAddress,loginId", null, format, null, null, null, null, null, false); + return SyslogAppender.createAppender("localhost", PORTNUM, "SSL", sslConfig, 0, -1, true, "Test", true, + false, Facility.LOCAL0, "Audit", 18060, true, "RequestContext", null, null, includeNewLine, null, + "TestApp", "Test", null, "ipAddress,loginId", null, format, null, null, null, null, null, false); } private void initTlsTestEnvironment(final int numberOfMessages, final TlsSyslogMessageFormat messageFormat) throws IOException { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java index 680ac37..f97b584 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/AbstractSocketServerTest.java @@ -212,8 +212,8 @@ public abstract class AbstractSocketServerTest { protected SocketAppender createSocketAppender(final Filter socketFilter, final Layout<? extends Serializable> socketLayout) { - return SocketAppender.createAppender("localhost", this.port, this.protocol, null, "-1", null, "Test", - "true", "false", socketLayout, socketFilter, null, null); + return SocketAppender.createAppender("localhost", this.port, this.protocol, null, 0, "-1", null, + "Test", "true", "false", socketLayout, socketFilter, null, null); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/SslXmlSocketServerTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/SslXmlSocketServerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/SslXmlSocketServerTest.java index 4b4ee31..35c0e8b 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/SslXmlSocketServerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/server/SslXmlSocketServerTest.java @@ -51,8 +51,8 @@ public class SslXmlSocketServerTest extends AbstractSocketServerTest { @Override protected SocketAppender createSocketAppender(final Filter socketFilter, final Layout<? extends Serializable> socketLayout) { - return SocketAppender.createAppender("localhost", this.port, this.protocol, sslConfig, "-1", null, "Test", - "true", "false", socketLayout, socketFilter, null, null); + return SocketAppender.createAppender("localhost", this.port, this.protocol, sslConfig, 0, "-1", null, + "Test", "true", "false", socketLayout, socketFilter, null, null); } @BeforeClass http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 47e9dca..85272e4 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -23,12 +23,18 @@ <title>Changes</title> </properties> <body> - <release version="2.1.1" date="201?-??-??" description="GA Release 2.2"> + <release version="2.2" date="201?-??-??" description="GA Release 2.2"> + <action issue="LOG4J2-895" dev="ggregory" type="add"> + Specify the SyslogAppender connect timeout value as part of the configuration. + </action> + <action issue="LOG4J2-899" dev="ggregory" type="add"> + Specify the SocketAppender connect timeout value as part of the configuration. + </action> <action issue="LOG4J2-893" dev="ggregory" type="fix"> NullPointerException on filter when mapping JUL to Log4j2. </action> <action issue="LOG4J2-892" dev="ggregory" type="fix"> - JUL adapter does not map Log4j'2 FATAL level to JUL level. + JUL adapter does not map Log4j'2 FATAL level to a JUL level. </action> <action issue="LOG4J2-881" dev="ggregory" type="fix" due-to="Mariano Gonzalez"> AbstractLifecycle should not implement equals() and hashCode(). http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cdbbedd/src/site/xdoc/manual/appenders.xml ---------------------------------------------------------------------- diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml index c62c75d..abe0c9a 100644 --- a/src/site/xdoc/manual/appenders.xml +++ b/src/site/xdoc/manual/appenders.xml @@ -2876,6 +2876,12 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { set to <code>false</code>).</td> </tr> <tr> + <td>connectTimeoutMillis</td> + <td>integer</td> + <td>The connect timeout in milliseconds. The default is 0 (infinite timeout, like Socket.connect() + methods).</td> + </tr> + <tr> <td>ignoreExceptions</td> <td>boolean</td> <td>The default is <code>true</code>, causing exceptions encountered while appending events to be @@ -2956,6 +2962,12 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { If not specified, the default system Charset will be used.</td> </tr> <tr> + <td>connectTimeoutMillis</td> + <td>integer</td> + <td>The connect timeout in milliseconds. The default is 0 (infinite timeout, like Socket.connect() + methods).</td> + </tr> + <tr> <td>enterpriseNumber</td> <td>integer</td> <td>The IANA enterprise number as described in
