[ 
https://issues.apache.org/jira/browse/LOG4J2-1047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14581522#comment-14581522
 ] 

Guillaume Turri commented on LOG4J2-1047:
-----------------------------------------

This patch applies cleanly on top of master:

{code}
>From f8285ef5c956733fffe1e0b1c3bf24fb46b317be Mon Sep 17 00:00:00 2001
From: Guillaume Turri <[email protected]>
Date: Fri, 5 Jun 2015 17:44:15 +0200
Subject: [PATCH] Syslog appender can catch up if we start without connection

Moreover this patch removes duplication:
* minor code duplication between DatagramSocketManager and TcpSocketManager
  in the way to handle the error when retrieving the InetAddress
* data duplication in the AbstractSocketManager constructor, because we
  had to provide both a InetAddress and a host name, which both match the same
  thing
---
 .../log4j/core/net/AbstractSocketManager.java        | 19 +++++++++++++++----
 .../log4j/core/net/DatagramSocketManager.java        | 16 +++-------------
 .../logging/log4j/core/net/SslSocketManager.java     | 20 +++-----------------
 .../logging/log4j/core/net/TcpSocketManager.java     | 20 +++++---------------
 4 files changed, 26 insertions(+), 49 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
index 4ce9690..0463ff4 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
@@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.net;
 import java.io.OutputStream;
 import java.io.Serializable;
 import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -33,7 +34,14 @@ public abstract class AbstractSocketManager extends 
OutputStreamManager {
     /**
      * The Internet address of the host.
      */
-    protected final InetAddress inetAddress;
+    private InetAddress inetAddress;
+
+    protected InetAddress getInetAddress() throws UnknownHostException{
+        if ( inetAddress == null ){
+            inetAddress = InetAddress.getByName(host);
+        }
+        return inetAddress;
+    }
     
     /**
      * The name of the host.
@@ -49,15 +57,18 @@ public abstract class AbstractSocketManager extends 
OutputStreamManager {
      * The Constructor.
      * @param name The unique name of this connection.
      * @param os The OutputStream to manage.
-     * @param inetAddress The Internet address.
      * @param host The target host name.
      * @param port The target port number.
      */
-    public AbstractSocketManager(final String name, final OutputStream os, 
final InetAddress inetAddress, final String host,
+    public AbstractSocketManager(final String name, final OutputStream os, 
final String host,
                                  final int port, final Layout<? extends 
Serializable> layout) {
         super(os, name, layout);
-        this.inetAddress = inetAddress;
         this.host = host;
+        try {
+            this.inetAddress = getInetAddress();
+        } catch(UnknownHostException ex) {
+            LOGGER.error("Could not find address of " + this.host, ex);
+        }
         this.port = port;
     }
 
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
index 4a49171..c5034c4 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
@@ -18,8 +18,6 @@ package org.apache.logging.log4j.core.net;
 
 import java.io.OutputStream;
 import java.io.Serializable;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -38,14 +36,13 @@ public class DatagramSocketManager extends 
AbstractSocketManager {
      * The Constructor.
      * @param name The unique name of the connection.
      * @param os The OutputStream.
-     * @param inetAddress
      * @param host The host to connect to.
      * @param port The port on the host.
      * @param layout The layout
      */
-    protected DatagramSocketManager(final String name, final OutputStream os, 
final InetAddress inetAddress, final String host,
+    protected DatagramSocketManager(final String name, final OutputStream os, 
final String host,
                 final int port, final Layout<? extends Serializable> layout) {
-        super(name, os, inetAddress, host, port, layout);
+        super(name, os, host, port, layout);
     }
 
     /**
@@ -105,16 +102,9 @@ public class DatagramSocketManager extends 
AbstractSocketManager {
 
         @Override
         public DatagramSocketManager createManager(final String name, final 
FactoryData data) {
-            InetAddress inetAddress;
-            try {
-                inetAddress = InetAddress.getByName(data.host);
-            } catch (final UnknownHostException ex) {
-                LOGGER.error("Could not find address of " + data.host, ex);
-                return null;
-            }
             final OutputStream os = new DatagramOutputStream(data.host, 
data.port, data.layout.getHeader(),
                     data.layout.getFooter());
-            return new DatagramSocketManager(name, os, inetAddress, data.host, 
data.port, data.layout);
+            return new DatagramSocketManager(name, os, data.host, data.port, 
data.layout);
         }
     }
 }
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 eeca463..77c279f 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
@@ -57,10 +57,10 @@ public class SslSocketManager extends TcpSocketManager {
      * @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 SslConfiguration sslConfig, final String host, final int 
port,
             final int connectTimeoutMillis, final int delay, final boolean 
immediateFail,
             final Layout<? extends Serializable> layout) {
-        super(name, os, sock, inetAddress, host, port, connectTimeoutMillis, 
delay, immediateFail, layout);
+        super(name, os, sock, host, port, connectTimeoutMillis, delay, 
immediateFail, layout);
         this.sslConfig = sslConfig;
     }
 
@@ -133,12 +133,10 @@ public class SslSocketManager extends TcpSocketManager {
 
         @Override
         public SslSocketManager createManager(final String name, final 
SslFactoryData data) {
-            InetAddress inetAddress = null;
             OutputStream os = null;
             Socket socket = null;
 
             try {
-                inetAddress = resolveAddress(data.host);
                 socket = createSocket(data);
                 os = socket.getOutputStream();
                 checkDelay(data.delayMillis, os);
@@ -151,22 +149,10 @@ public class SslSocketManager extends TcpSocketManager {
                 LOGGER.catching(Level.DEBUG, e);
                 return null;
             }
-            return new SslSocketManager(name, os, socket, data.sslConfig, 
inetAddress, data.host, data.port, 0,
+            return new SslSocketManager(name, os, socket, data.sslConfig, 
data.host, data.port, 0,
                     data.delayMillis, data.immediateFail, data.layout);
         }
 
-        private InetAddress resolveAddress(final String hostName) throws 
TlsSocketManagerFactoryException {
-            InetAddress address;
-
-            try {
-                address = InetAddress.getByName(hostName);
-            } catch (final UnknownHostException ex) {
-                LOGGER.error("Could not find address of {}", hostName, ex);
-                throw new TlsSocketManagerFactoryException();
-            }
-
-            return address;
-        }
 
         private void checkDelay(final int delay, final OutputStream os) throws 
TlsSocketManagerFactoryException {
             if (delay == 0 && os == null) {
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 60bc17d..06c21e7 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
@@ -24,7 +24,6 @@ import java.net.ConnectException;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Socket;
-import java.net.UnknownHostException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
@@ -67,7 +66,6 @@ public class TcpSocketManager extends AbstractSocketManager {
      * @param name The unique name of this connection.
      * @param os The OutputStream.
      * @param sock The Socket.
-     * @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.
@@ -75,10 +73,10 @@ public class TcpSocketManager extends AbstractSocketManager 
{
      * @param immediateFail
      * @param layout The Layout.
      */
-    public TcpSocketManager(final String name, final OutputStream os, final 
Socket sock, final InetAddress inetAddress,
+    public TcpSocketManager(final String name, final OutputStream os, final 
Socket sock,
                             final String host, final int port, final int 
connectTimeoutMillis, final int delay,
                             final boolean immediateFail, final Layout<? 
extends Serializable> layout) {
-        super(name, os, inetAddress, host, port, layout);
+        super(name, os, host, port, layout);
         this.connectTimeoutMillis = connectTimeoutMillis;
         this.reconnectionDelay = delay;
         this.socket = sock;
@@ -205,7 +203,7 @@ public class TcpSocketManager extends AbstractSocketManager 
{
             while (!shutdown) {
                 try {
                     sleep(reconnectionDelay);
-                    final Socket sock = createSocket(inetAddress, port);
+                    final Socket sock = createSocket(getInetAddress(), port);
                     final OutputStream newOS = sock.getOutputStream();
                     synchronized (owner) {
                         try {
@@ -273,20 +271,12 @@ public class TcpSocketManager extends 
AbstractSocketManager {
         @Override
         public TcpSocketManager createManager(final String name, final 
FactoryData data) {
 
-            InetAddress inetAddress;
             OutputStream os;
             try {
-                inetAddress = InetAddress.getByName(data.host);
-            } catch (final UnknownHostException ex) {
-                LOGGER.error("Could not find address of " + data.host, ex);
-                return null;
-            }
-            try {
-                // LOG4J2-1042
                 final Socket socket = new Socket();
                 socket.connect(new InetSocketAddress(data.host, data.port), 
data.connectTimeoutMillis);
                 os = socket.getOutputStream();
-                return new TcpSocketManager(name, os, socket, inetAddress, 
data.host, data.port,
+                return new TcpSocketManager(name, os, socket, data.host, 
data.port,
                         data.connectTimeoutMillis, data.delayMillis, 
data.immediateFail, data.layout);
             } catch (final IOException ex) {
                 LOGGER.error("TcpSocketManager (" + name + ") " + ex);
@@ -295,7 +285,7 @@ public class TcpSocketManager extends AbstractSocketManager 
{
             if (data.delayMillis == 0) {
                 return null;
             }
-            return new TcpSocketManager(name, os, null, inetAddress, 
data.host, data.port, data.connectTimeoutMillis,
+            return new TcpSocketManager(name, os, null, data.host, data.port, 
data.connectTimeoutMillis,
                     data.delayMillis, data.immediateFail, data.layout);
         }
     }
-- 
1.9.1
{code}

> When SyslogAppender can't find inetAddress at startup, it will never try to 
> reconnect
> -------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-1047
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1047
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.3
>         Environment: > lsb_release  -a
> No LSB modules are available.
> Distributor ID:       Ubuntu
> Description:  Ubuntu 14.04.2 LTS
> Release:      14.04
> Codename:     trusty
> > java -version
> java version "1.7.0_79"
> OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)
> OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
>            Reporter: Guillaume Turri
>            Priority: Minor
>
> * Steps to reproduce:
> ** Deactivate your wifi and unplug your network cable.
> ** Launch the following code with the following config
> ** Reactivate the network while the code is still running
> The code is:
> {code}
> import org.apache.logging.log4j.LogManager;
> import org.apache.logging.log4j.Logger
> public class App
> {
>       private static final Logger _logger = 
> LogManager.getLogger("TestLogger");
>       public static void main( String[] args ) throws Exception
>       {
>               int id = 0;
>               while ( true ){
>                       String msg = "message: " + id;
>                       _logger.error(msg);
>                       id++;
>                        Thread.sleep(1000);
>               }
>       }
> }
> {code}
> the config is:
> {code}
> <?xml version="1.0" encoding="UTF-8"?>                                        
>                                                                               
>                                                                               
>                                                                          
> <Configuration status="WARN">
>   <Appenders>
>     <Console name="Console" target="SYSTEM_OUT">
>       <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - 
> %msg%n"/>
>     </Console>
>     <Syslog name="my-syslog" host="my-host" port="12201" protocol="TCP" 
> format="RFC5424" mdcId="mdc" includeMDC="true" appName="testGTApp" 
> newLine="true" connectTimeoutMillis="100" immediateFail="true" 
> reconnectionDelayMillis="3000" immediateFlush="true" />
>   </Appenders>
>   <Loggers>
>     <Root level="info">
>       <AppenderRef ref="Console" />
>       <AppenderRef ref="my-syslog"/>
>     </Root>
>   </Loggers>
> </Configuration>
> {code}
> where "my-host" is a host with an actual syslog listening on the given port 
> and with the given protocol.
> "my-host" should be the name of the host. ie: it should *not* be an IP. It 
> should *not* be localhost either. 
> * Expected behavior: after we retrieve the network, messages are logged in 
> the syslog
> * Actual behavior: it starts by logging on the console the following error, 
> and then, it never connects to the syslog
> {code}
> 2015-06-09 16:31:26,939 ERROR Could not find address ofmy-host 
> java.net.UnknownHostException: my-host: Name or service not known
>       at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
>       at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
>       at 
> java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
>       at java.net.InetAddress.getAllByName0(InetAddress.java:1246)
>       at java.net.InetAddress.getAllByName(InetAddress.java:1162)
>       at java.net.InetAddress.getAllByName(InetAddress.java:1098)
>       at java.net.InetAddress.getByName(InetAddress.java:1048)
>       at 
> org.apache.logging.log4j.core.net.TcpSocketManager$TcpSocketManagerFactory.createManager(TcpSocketManager.java:279)
>       at 
> org.apache.logging.log4j.core.net.TcpSocketManager$TcpSocketManagerFactory.createManager(TcpSocketManager.java:272)
>       at 
> org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:71)
>       at 
> org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:60)
>       at 
> org.apache.logging.log4j.core.net.TcpSocketManager.getSocketManager(TcpSocketManager.java:114)
>       at 
> org.apache.logging.log4j.core.appender.SocketAppender.createSocketManager(SocketAppender.java:173)
>       at 
> org.apache.logging.log4j.core.appender.SyslogAppender.createAppender(SyslogAppender.java:145)
>         [... truncated ...]
> 2015-06-09 16:31:26,942 ERROR Unable to invoke factory method in class class 
> org.apache.logging.log4j.core.appender.SyslogAppender for element Syslog. 
> java.lang.reflect.InvocationTargetException
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:137)
>       [... truncated. ...]
> 2015-06-09 16:31:26,944 ERROR Null object returned for Syslog in Appenders.
> 2015-06-09 16:31:26,947 ERROR Unable to locate appender my-syslog for logger 
> {code}
> * Potential fix: 
> The following patch fixes the issue. (it changes a few public signatures, so 
> you may not want to apply it as-is).
> {code}
> From 0d2818762cf768e80f46fd08f48abac37747825b Mon Sep 17 00:00:00 2001
> From: Guillaume Turri <[email protected]>
> Date: Fri, 5 Jun 2015 17:44:15 +0200
> Subject: [PATCH] Syslog appender can catch up if we start without connection
> Moreover this patch removes duplication:
> * minor code duplication between DatagramSocketManager and TcpSocketManager
>   in the way to handle the error when retrieving the InetAddress
> * data duplication in the AbstractSocketManager constructor, because we
>   had to provide both a InetAddress and a host name, which both match the same
>   thing
> ---
>  .../logging/log4j/core/net/AbstractSocketManager.java | 19 
> +++++++++++++++----
>  .../logging/log4j/core/net/DatagramSocketManager.java | 16 +++-------------
>  .../logging/log4j/core/net/SslSocketManager.java      |  4 ++--
>  .../logging/log4j/core/net/TcpSocketManager.java      | 19 
> +++++--------------
>  4 files changed, 25 insertions(+), 33 deletions(-)
> diff --git 
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
>  
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
> index 5ff43a3..4b0923c 100644
> --- 
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
> +++ 
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
> @@ -19,6 +19,7 @@ package org.apache.logging.log4j.core.net;
>  import java.io.OutputStream;
>  import java.io.Serializable;
>  import java.net.InetAddress;
> +import java.net.UnknownHostException;
>  import java.util.HashMap;
>  import java.util.Map;
>  
> @@ -33,7 +34,14 @@ public abstract class AbstractSocketManager extends 
> OutputStreamManager {
>      /**
>       * The Internet address of the host.
>       */
> -    protected final InetAddress inetAddress;
> +    private InetAddress inetAddress;
> +    
> +    protected InetAddress getInetAddress() throws UnknownHostException{
> +     if ( inetAddress == null ){
> +             inetAddress = InetAddress.getByName(host);
> +     }
> +     return inetAddress;
> +    }
>      
>      /**
>       * The name of the host.
> @@ -49,15 +57,18 @@ public abstract class AbstractSocketManager extends 
> OutputStreamManager {
>       * The Constructor.
>       * @param name The unique name of this connection.
>       * @param os The OutputStream to manage.
> -     * @param inetAddress The Internet address.
>       * @param host The target host name.
>       * @param port The target port number.
>       */
> -    public AbstractSocketManager(final String name, final OutputStream os, 
> final InetAddress inetAddress, final String host,
> +    public AbstractSocketManager(final String name, final OutputStream os, 
> final String host,
>                                   final int port, final Layout<? extends 
> Serializable> layout) {
>          super(os, name, layout);
> -        this.inetAddress = inetAddress;
>          this.host = host;
> +        try {
> +             this.inetAddress = getInetAddress();
> +        } catch(UnknownHostException ex) {
> +             LOGGER.error("Could not find address of " + this.host, ex);
> +        }
>          this.port = port;
>      }
>  
> diff --git 
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
>  
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
> index e16c6ef..5b0ab8f 100644
> --- 
> a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
> +++ 
> b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
> @@ -18,8 +18,6 @@ package org.apache.logging.log4j.core.net;
>  
>  import java.io.OutputStream;
>  import java.io.Serializable;
> -import java.net.InetAddress;
> -import java.net.UnknownHostException;
>  import java.util.HashMap;
>  import java.util.Map;
>  
> @@ -38,14 +36,13 @@ public class DatagramSocketManager extends 
> AbstractSocketManager {
>       * The Constructor.
>       * @param name The unique name of the connection.
>       * @param os The OutputStream.
> -     * @param inetAddress
>       * @param host The host to connect to.
>       * @param port The port on the host.
>       * @param layout The layout
>       */
> -    protected DatagramSocketManager(final String name, final OutputStream 
> os, final InetAddress inetAddress, final String host,
> +    protected DatagramSocketManager(final String name, final OutputStream 
> os, final String host,
>                  final int port, final Layout<? extends Serializable> layout) 
> {
> -        super(name, os, inetAddress, host, port, layout);
> +        super(name, os, host, port, layout);
>      }
>  
>      /**
> @@ -105,16 +102,9 @@ public class DatagramSocketManager extends 
> AbstractSocketManager {
>  
>          @Override
>          public DatagramSocketManager createManager(final String name, final 
> FactoryData data) {
> -            InetAddress inetAddress;
> -            try {
> -                inetAddress = InetAddress.getByName(data.host);
> -            } catch (final UnknownHostException ex) {
> -                LOGGER.error("Could not find address of " + data.host, ex);
> -                return null;
> -            }
>              final OutputStream os = new DatagramOutputStream(data.host, 
> data.port, data.layout.getHeader(),
>                      data.layout.getFooter());
> -            return new DatagramSocketManager(name, os, inetAddress, 
> data.host, data.port, data.layout);
> +            return new DatagramSocketManager(name, os, data.host, data.port, 
> data.layout);
>          }
>      }
>  }
> 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 87e7867..cc43490 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
> @@ -57,10 +57,10 @@ public class SslSocketManager extends TcpSocketManager {
>       * @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 SslConfiguration sslConfig, 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);
> +        super(name, os, sock, host, port, connectTimeoutMillis, delay, 
> immediateFail, layout);
>          this.sslConfig = sslConfig;
>      }
>  
> 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 9ab9f5f..20796bb 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
> @@ -24,7 +24,6 @@ import java.net.ConnectException;
>  import java.net.InetAddress;
>  import java.net.InetSocketAddress;
>  import java.net.Socket;
> -import java.net.UnknownHostException;
>  import java.util.HashMap;
>  import java.util.Map;
>  import java.util.concurrent.CountDownLatch;
> @@ -67,7 +66,6 @@ public class TcpSocketManager extends AbstractSocketManager 
> {
>       * @param name The unique name of this connection.
>       * @param os The OutputStream.
>       * @param sock The Socket.
> -     * @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.
> @@ -75,10 +73,10 @@ public class TcpSocketManager extends 
> AbstractSocketManager {
>       * @param immediateFail
>       * @param layout The Layout.
>       */
> -    public TcpSocketManager(final String name, final OutputStream os, final 
> Socket sock, final InetAddress inetAddress,
> +    public TcpSocketManager(final String name, final OutputStream os, final 
> Socket sock,
>                              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);
> +        super(name, os, host, port, layout);
>          this.connectTimeoutMillis = connectTimeoutMillis;
>          this.reconnectionDelay = delay;
>          this.socket = sock;
> @@ -205,7 +203,7 @@ public class TcpSocketManager extends 
> AbstractSocketManager {
>              while (!shutdown) {
>                  try {
>                      sleep(reconnectionDelay);
> -                    final Socket sock = createSocket(inetAddress, port);
> +                    final Socket sock = createSocket(getInetAddress(), port);
>                      final OutputStream newOS = sock.getOutputStream();
>                      synchronized (owner) {
>                          try {
> @@ -273,18 +271,11 @@ public class TcpSocketManager extends 
> AbstractSocketManager {
>          @Override
>          public TcpSocketManager createManager(final String name, final 
> FactoryData data) {
>  
> -            InetAddress inetAddress;
>              OutputStream os;
>              try {
> -                inetAddress = InetAddress.getByName(data.host);
> -            } catch (final UnknownHostException ex) {
> -                LOGGER.error("Could not find address of " + data.host, ex);
> -                return null;
> -            }
> -            try {
>                  final Socket socket = new Socket(data.host, data.port);
>                  os = socket.getOutputStream();
> -                return new TcpSocketManager(name, os, socket, inetAddress, 
> data.host, data.port,
> +                return new TcpSocketManager(name, os, socket, data.host, 
> data.port,
>                          data.connectTimeoutMillis, data.delayMillis, 
> data.immediateFail, data.layout);
>              } catch (final IOException ex) {
>                  LOGGER.error("TcpSocketManager (" + name + ") " + ex);
> @@ -293,7 +284,7 @@ public class TcpSocketManager extends 
> AbstractSocketManager {
>              if (data.delayMillis == 0) {
>                  return null;
>              }
> -            return new TcpSocketManager(name, os, null, inetAddress, 
> data.host, data.port, data.connectTimeoutMillis,
> +            return new TcpSocketManager(name, os, null, data.host, 
> data.port, data.connectTimeoutMillis,
>                      data.delayMillis, data.immediateFail, data.layout);
>          }
>      }
> -- 
> 1.9.1
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to