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 2016/09/03 17:40:55 UTC

[01/10] logging-log4j2 git commit: First commit for LOG4J2-1558 branch.

Repository: logging-log4j2
Updated Branches:
  refs/heads/master f8794cd4f -> 5c99b6bed


First commit for LOG4J2-1558 branch.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/53e7bbc0
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/53e7bbc0
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/53e7bbc0

Branch: refs/heads/master
Commit: 53e7bbc0f06fb73b6a42fcf7fb43ec603e60e639
Parents: e18fcb7
Author: ggregory <gg...@apache.org>
Authored: Thu Sep 1 14:16:03 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Thu Sep 1 14:16:03 2016 -0700

----------------------------------------------------------------------
 .../appender/AbstractOutputStreamAppender.java  | 27 ++++++-
 .../log4j/core/appender/FileAppender.java       | 28 +------
 .../core/appender/OutputStreamManager.java      |  8 +-
 .../core/appender/RollingFileAppender.java      | 33 +-------
 .../log4j/core/appender/SocketAppender.java     | 19 ++---
 .../log4j/core/appender/SyslogAppender.java     |  4 +-
 .../log4j/core/net/AbstractSocketManager.java   |  6 +-
 .../log4j/core/net/DatagramSocketManager.java   | 21 +++--
 .../log4j/core/net/SslSocketManager.java        | 31 +++----
 .../log4j/core/net/TcpSocketManager.java        | 85 +++++++++++---------
 .../log4j/core/appender/SocketAppenderTest.java | 29 +++++--
 11 files changed, 159 insertions(+), 132 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
index 3e14d84..be62a66 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
@@ -39,16 +39,41 @@ public abstract class AbstractOutputStreamAppender<M extends OutputStreamManager
     public abstract static class Builder<B extends Builder<B>> extends AbstractAppender.Builder<B> {
     
         @PluginBuilderAttribute
+        private boolean bufferedIo = true;
+
+        @PluginBuilderAttribute
+        private int bufferSize = Constants.ENCODER_BYTE_BUFFER_SIZE;
+
+        @PluginBuilderAttribute
         private boolean immediateFlush;
 
+        public int getBufferSize() {
+            return bufferSize;
+        }
+
+        public boolean isBufferedIo() {
+            return bufferedIo;
+        }
+
         public boolean isImmediateFlush() {
             return immediateFlush;
         }
-
+        
         public B withImmediateFlush(boolean immediateFlush) {
             this.immediateFlush = immediateFlush;
             return asBuilder();
         }
+        
+        public B withBufferedIo(final boolean bufferedIo) {
+            this.bufferedIo = bufferedIo;
+            return asBuilder();
+        }
+
+        public B withBufferSize(final int bufferSize) {
+            this.bufferSize = bufferSize;
+            return asBuilder();
+        }
+
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
index 6b035cd..9e95593 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
@@ -58,12 +58,6 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
         private boolean locking;
 
         @PluginBuilderAttribute
-        private boolean bufferedIo = true;
-
-        @PluginBuilderAttribute
-        private int bufferSize = DEFAULT_BUFFER_SIZE;
-
-        @PluginBuilderAttribute
         private boolean advertise;
 
         @PluginBuilderAttribute
@@ -77,12 +71,14 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
 
         @Override
         public FileAppender build() {
+            boolean bufferedIo = isBufferedIo();
+            final int bufferSize = getBufferSize();
             if (locking && bufferedIo) {
                 LOGGER.warn("Locking and buffering are mutually exclusive. No buffering will occur for {}", fileName);
                 bufferedIo = false;
             }
             if (!bufferedIo && bufferSize > 0) {
-                LOGGER.warn("The bufferSize is set to {} but bufferedIo is not true: {}", bufferSize, bufferedIo);
+                LOGGER.warn("The bufferSize is set to {} but bufferedIo is false: {}", bufferSize, bufferedIo);
             }
             Layout<? extends Serializable> layout = getOrCreateLayout();
 
@@ -100,10 +96,6 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             return advertiseUri;
         }
 
-        public int getBufferSize() {
-            return bufferSize;
-        }
-
         public Configuration getConfiguration() {
             return configuration;
         }
@@ -120,10 +112,6 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             return append;
         }
 
-        public boolean isBufferedIo() {
-            return bufferedIo;
-        }
-
         public boolean isCreateOnDemand() {
             return createOnDemand;
         }
@@ -147,16 +135,6 @@ public final class FileAppender extends AbstractOutputStreamAppender<FileManager
             return asBuilder();
         }
 
-        public B withBufferedIo(final boolean bufferedIo) {
-            this.bufferedIo = bufferedIo;
-            return asBuilder();
-        }
-
-        public B withBufferSize(final int bufferSize) {
-            this.bufferSize = bufferSize;
-            return asBuilder();
-        }
-
         public B withConfiguration(final Configuration config) {
             this.configuration = config;
             return asBuilder();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
index 97a9dc6..81d5027 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
@@ -40,7 +40,13 @@ public class OutputStreamManager extends AbstractManager implements ByteBufferDe
     protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout,
             final boolean writeHeader) {
         // Can't use new ctor because it throws an exception
-        this(os, streamName, layout, writeHeader, ByteBuffer.wrap(new byte[Constants.ENCODER_BYTE_BUFFER_SIZE]));
+        this(os, streamName, layout, writeHeader, Constants.ENCODER_BYTE_BUFFER_SIZE);
+    }
+
+    protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout,
+            final boolean writeHeader, final int bufferSize) {
+        // Can't use new ctor because it throws an exception
+        this(os, streamName, layout, writeHeader, ByteBuffer.wrap(new byte[bufferSize]));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
index f8f66f2..e081f87 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
@@ -30,14 +30,11 @@ import org.apache.logging.log4j.core.appender.rolling.RolloverStrategy;
 import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
-import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.Advertiser;
 import org.apache.logging.log4j.core.util.Booleans;
 import org.apache.logging.log4j.core.util.Integers;
@@ -79,12 +76,6 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll
         private RolloverStrategy strategy;
 
         @PluginBuilderAttribute
-        private boolean bufferedIo = true;
-
-        @PluginBuilderAttribute
-        private int bufferSize = DEFAULT_BUFFER_SIZE;
-
-        @PluginBuilderAttribute
         private boolean advertise;
 
         @PluginBuilderAttribute
@@ -100,12 +91,14 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll
         public RollingFileAppender build() {
             // Even though some variables may be annotated with @Required, we must still perform validation here for
             // call sites that build builders programmatically.
+            final boolean isBufferedIo = isBufferedIo();
+            final int bufferSize = getBufferSize();
             if (getName() == null) {
                 LOGGER.error("RollingFileAppender '{}': No name provided.", getName());
                 return null;
             }
 
-            if (!bufferedIo && bufferSize > 0) {
+            if (!isBufferedIo && bufferSize > 0) {
                 LOGGER.warn("RollingFileAppender '{}': The bufferSize is set to {} but bufferedIO is not true", getName(), bufferSize);
             }
 
@@ -135,7 +128,7 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll
             }
 
             final RollingFileManager manager = RollingFileManager.getFileManager(fileName, filePattern, append,
-                    bufferedIo, policy, strategy, advertiseUri, getLayout(), bufferSize, isImmediateFlush(),
+                    isBufferedIo, policy, strategy, advertiseUri, getLayout(), bufferSize, isImmediateFlush(),
                     createOnDemand, configuration);
             if (manager == null) {
                 return null;
@@ -151,10 +144,6 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll
             return advertiseUri;
         }
 
-        public int getBufferSize() {
-            return bufferSize;
-        }
-
         public Configuration getConfiguration() {
             return configuration;
         }
@@ -171,10 +160,6 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll
             return append;
         }
 
-        public boolean isBufferedIo() {
-            return bufferedIo;
-        }
-
         public boolean isCreateOnDemand() {
             return createOnDemand;
         }
@@ -198,16 +183,6 @@ public final class RollingFileAppender extends AbstractOutputStreamAppender<Roll
             return asBuilder();
         }
 
-        public B withBufferedIo(final boolean bufferedIo) {
-            this.bufferedIo = bufferedIo;
-            return asBuilder();
-        }
-
-        public B withBufferSize(final int bufferSize) {
-            this.bufferSize = bufferSize;
-            return asBuilder();
-        }
-
         public B withConfiguration(final Configuration config) {
             this.configuration = config;
             return asBuilder();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/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 57cbceb..d6eb27e 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
@@ -40,6 +40,7 @@ import org.apache.logging.log4j.core.net.SslSocketManager;
 import org.apache.logging.log4j.core.net.TcpSocketManager;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
 import org.apache.logging.log4j.core.util.Booleans;
+import org.apache.logging.log4j.core.util.Constants;
 
 /**
  * An Appender that delivers events over socket connections. Supports both TCP and UDP.
@@ -109,7 +110,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
             }
 
             final AbstractSocketManager manager = SocketAppender.createSocketManager(name, actualProtocol, host, port,
-                    connectTimeoutMillis, sslConfiguration, reconnectDelayMillis, immediateFail, layout);
+                    connectTimeoutMillis, sslConfiguration, reconnectDelayMillis, immediateFail, layout, getBufferSize());
 
             return new SocketAppender(name, layout, getFilter(), manager, isIgnoreExceptions(), immediateFlush,
                     advertise ? configuration.getAdvertiser() : null);
@@ -310,7 +311,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
             }
 
             final AbstractSocketManager manager = createSocketManager(name, actualProtocol, host, port,
-                    connectTimeoutMillis, sslConfig, reconnectDelayMillis, immediateFail, layout);
+                    connectTimeoutMillis, sslConfig, reconnectDelayMillis, immediateFail, layout, Constants.ENCODER_BYTE_BUFFER_SIZE);
 
             return new SocketAppender(name, layout, filter, manager, ignoreExceptions, immediateFlush,
                     advertise ? configuration.getAdvertiser() : null);
@@ -388,8 +389,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 int connectTimeoutMillis, final SslConfiguration sslConfig, final int delayMillis,
-            final boolean immediateFail, final Layout<? extends Serializable> layout) {
+            final int port, final int connectTimeoutMillis, final SslConfiguration sslConfig, final int reconnectDelayMillis,
+            final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
         if (protocol == Protocol.TCP && sslConfig != null) {
             // Upgrade TCP to SSL if an SSL config is specified.
             protocol = Protocol.SSL;
@@ -399,13 +400,13 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
         }
         switch (protocol) {
         case TCP:
-            return TcpSocketManager.getSocketManager(host, port, connectTimeoutMillis, delayMillis, immediateFail,
-                    layout);
+            return TcpSocketManager.getSocketManager(host, port, connectTimeoutMillis, reconnectDelayMillis, immediateFail,
+                    layout, bufferSize);
         case UDP:
-            return DatagramSocketManager.getSocketManager(host, port, layout);
+            return DatagramSocketManager.getSocketManager(host, port, layout, bufferSize);
         case SSL:
-            return SslSocketManager.getSocketManager(sslConfig, host, port, connectTimeoutMillis, delayMillis,
-                    immediateFail, layout);
+            return SslSocketManager.getSocketManager(sslConfig, host, port, connectTimeoutMillis, reconnectDelayMillis,
+                    immediateFail, layout, bufferSize);
         default:
             throw new IllegalArgumentException(protocol.toString());
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/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 1e9cdc0..13fa995 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
@@ -36,6 +36,7 @@ import org.apache.logging.log4j.core.net.Advertiser;
 import org.apache.logging.log4j.core.net.Facility;
 import org.apache.logging.log4j.core.net.Protocol;
 import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
+import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.util.EnglishEnums;
 
 /**
@@ -89,7 +90,6 @@ 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
@@ -143,7 +143,7 @@ public class SyslogAppender extends SocketAppender {
             return null;
         }
         final AbstractSocketManager manager = createSocketManager(name, protocol, host, port, connectTimeoutMillis,
-                sslConfig, reconnectionDelayMillis, immediateFail, layout);
+                sslConfig, reconnectionDelayMillis, immediateFail, layout, Constants.ENCODER_BYTE_BUFFER_SIZE);
 
         return new SyslogAppender(name, layout, filter, ignoreExceptions, immediateFlush, manager,
                 advertise ? config.getAdvertiser() : null);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractSocketManager.java
----------------------------------------------------------------------
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 ceeeeff..5157365 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
@@ -52,10 +52,12 @@ public abstract class AbstractSocketManager extends OutputStreamManager {
      * @param inetAddress The Internet address.
      * @param host The target host name.
      * @param port The target port number.
+     * @param bufferSize The buffer size.
      */
     public AbstractSocketManager(final String name, final OutputStream os, final InetAddress inetAddress,
-            final String host, final int port, final Layout<? extends Serializable> layout, final boolean writeHeader) {
-        super(os, name, layout, writeHeader);
+            final String host, final int port, final Layout<? extends Serializable> layout, final boolean writeHeader, 
+            final int bufferSize) {
+        super(os, name, layout, writeHeader, bufferSize);
         this.inetAddress = inetAddress;
         this.host = host;
         this.port = port;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/log4j-core/src/main/java/org/apache/logging/log4j/core/net/DatagramSocketManager.java
----------------------------------------------------------------------
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 0bcd793..56e17dc 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
@@ -42,10 +42,11 @@ public class DatagramSocketManager extends AbstractSocketManager {
      * @param host The host to connect to.
      * @param port The port on the host.
      * @param layout The layout
+     * @param bufferSize The buffer size
      */
     protected DatagramSocketManager(final String name, final OutputStream os, final InetAddress inetAddress, final String host,
-                final int port, final Layout<? extends Serializable> layout) {
-        super(name, os, inetAddress, host, port, layout, true);
+                final int port, final Layout<? extends Serializable> layout, final int bufferSize) {
+        super(name, os, inetAddress, host, port, layout, true, bufferSize);
     }
 
     /**
@@ -53,17 +54,19 @@ public class DatagramSocketManager extends AbstractSocketManager {
      * @param host The host to connect to.
      * @param port The port on the host.
      * @param layout The layout.
+     * @param bufferSize The buffer size.
      * @return A DatagramSocketManager.
      */
-    public static DatagramSocketManager getSocketManager(final String host, final int port, final Layout<? extends Serializable> layout) {
+    public static DatagramSocketManager getSocketManager(final String host, final int port,
+            final Layout<? extends Serializable> layout, final int bufferSize) {
         if (Strings.isEmpty(host)) {
             throw new IllegalArgumentException("A host name is required");
         }
         if (port <= 0) {
             throw new IllegalArgumentException("A port value is required");
         }
-        return (DatagramSocketManager) getManager("UDP:" + host + ':' + port, new FactoryData(host, port, layout),
-            FACTORY);
+        return (DatagramSocketManager) getManager("UDP:" + host + ':' + port,
+                new FactoryData(host, port, layout, bufferSize), FACTORY);
     }
 
     /**
@@ -90,11 +93,13 @@ public class DatagramSocketManager extends AbstractSocketManager {
         private final String host;
         private final int port;
         private final Layout<? extends Serializable> layout;
-
-        public FactoryData(final String host, final int port, final Layout<? extends Serializable> layout) {
+        private final int bufferSize;
+        
+        public FactoryData(final String host, final int port, final Layout<? extends Serializable> layout, int bufferSize) {
             this.host = host;
             this.port = port;
             this.layout = layout;
+            this.bufferSize = bufferSize;
         }
     }
 
@@ -114,7 +119,7 @@ public class DatagramSocketManager extends AbstractSocketManager {
             }
             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, inetAddress, data.host, data.port, data.layout, data.bufferSize);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/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 1e5a958..73e2230 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
@@ -55,51 +55,54 @@ public class SslSocketManager extends TcpSocketManager {
      * @param delay         Reconnection interval.
      * @param immediateFail
      * @param layout        The Layout.
+     * @param bufferSize The buffer size.
      */
     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 connectTimeoutMillis, final int delay, final boolean immediateFail,
-            final Layout<? extends Serializable> layout) {
-        super(name, os, sock, inetAddress, host, port, connectTimeoutMillis, delay, immediateFail, layout);
+            final Layout<? extends Serializable> layout, int bufferSize) {
+        super(name, os, sock, inetAddress, host, port, connectTimeoutMillis, delay, immediateFail, layout, bufferSize);
         this.sslConfig = sslConfig;
     }
 
     private static class SslFactoryData {
-        protected SslConfiguration sslConfig;
+        protected SslConfiguration sslConfiguration;
         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;
+        private final int bufferSize;
 
-        public SslFactoryData(final SslConfiguration sslConfig, final String host, final int port,
+        public SslFactoryData(final SslConfiguration sslConfiguration, final String host, final int port,
                 final int connectTimeoutMillis, final int delayMillis, final boolean immediateFail,
-                final Layout<? extends Serializable> layout) {
+                final Layout<? extends Serializable> layout, final int bufferSize) {
             this.host = host;
             this.port = port;
             this.connectTimeoutMillis = connectTimeoutMillis;
             this.delayMillis = delayMillis;
             this.immediateFail = immediateFail;
             this.layout = layout;
-            this.sslConfig = sslConfig;
+            this.sslConfiguration = sslConfiguration;
+            this.bufferSize = bufferSize;
         }
     }
 
     public static SslSocketManager getSocketManager(final SslConfiguration sslConfig, final String host, int port,
-            final int connectTimeoutMillis, int delayMillis, final boolean immediateFail,
-            final Layout<? extends Serializable> layout) {
+            final int connectTimeoutMillis, int reconnectDelayMillis, final boolean immediateFail,
+            final Layout<? extends Serializable> layout, final int bufferSize) {
         if (Strings.isEmpty(host)) {
             throw new IllegalArgumentException("A host name is required");
         }
         if (port <= 0) {
             port = DEFAULT_PORT;
         }
-        if (delayMillis == 0) {
-            delayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS;
+        if (reconnectDelayMillis == 0) {
+            reconnectDelayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS;
         }
         return (SslSocketManager) getManager("TLS:" + host + ':' + port, new SslFactoryData(sslConfig, host, port,
-                connectTimeoutMillis, delayMillis, immediateFail, layout), FACTORY);
+                connectTimeoutMillis, reconnectDelayMillis, immediateFail, layout, bufferSize), FACTORY);
     }
 
     @Override
@@ -151,8 +154,8 @@ 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,
-                    data.delayMillis, data.immediateFail, data.layout);
+            return new SslSocketManager(name, os, socket, data.sslConfiguration, inetAddress, data.host, data.port, 0,
+                    data.delayMillis, data.immediateFail, data.layout, data.bufferSize);
         }
 
         private InetAddress resolveAddress(final String hostName) throws TlsSocketManagerFactoryException {
@@ -178,7 +181,7 @@ public class SslSocketManager extends TcpSocketManager {
             SSLSocketFactory socketFactory;
             SSLSocket socket;
 
-            socketFactory = createSslSocketFactory(data.sslConfig);
+            socketFactory = createSslSocketFactory(data.sslConfiguration);
             socket = (SSLSocket) socketFactory.createSocket(data.host, data.port);
             return socket;
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/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 756ba35..4f7f822 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
@@ -53,7 +53,7 @@ public class TcpSocketManager extends AbstractSocketManager {
 
     private final int reconnectionDelay;
 
-    private Reconnector connector;
+    private Reconnector reconnector;
 
     private Socket socket;
 
@@ -67,7 +67,7 @@ public class TcpSocketManager extends AbstractSocketManager {
      * The Constructor.
      * @param name The unique name of this connection.
      * @param os The OutputStream.
-     * @param sock The Socket.
+     * @param socket 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.
@@ -75,21 +75,22 @@ public class TcpSocketManager extends AbstractSocketManager {
      * @param delay Reconnection interval.
      * @param immediateFail True if the write should fail if no socket is immediately available.
      * @param layout The Layout.
+     * @param bufferSize The buffer size.
      */
-    public TcpSocketManager(final String name, final OutputStream os, final Socket sock, final InetAddress inetAddress,
+    public TcpSocketManager(final String name, final OutputStream os, final Socket socket, final InetAddress inetAddress,
                             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, true);
+                            final boolean immediateFail, final Layout<? extends Serializable> layout, int bufferSize) {
+        super(name, os, inetAddress, host, port, layout, true, bufferSize);
         this.connectTimeoutMillis = connectTimeoutMillis;
         this.reconnectionDelay = delay;
-        this.socket = sock;
+        this.socket = socket;
         this.immediateFail = immediateFail;
         retry = delay > 0;
-        if (sock == null) {
-            connector = new Reconnector(this);
-            connector.setDaemon(true);
-            connector.setPriority(Thread.MIN_PRIORITY);
-            connector.start();
+        if (socket == null) {
+            reconnector = new Reconnector(this);
+            reconnector.setDaemon(true);
+            reconnector.setPriority(Thread.MIN_PRIORITY);
+            reconnector.start();
         }
     }
 
@@ -98,29 +99,30 @@ public class TcpSocketManager extends AbstractSocketManager {
      * @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.
+     * @param reconnectDelayMillis The interval to pause between retries.
+     * @param bufferSize The buffer size.
      * @return A TcpSocketManager.
      */
     public static TcpSocketManager getSocketManager(final String host, int port, final int connectTimeoutMillis,
-            int delayMillis, final boolean immediateFail, final Layout<? extends Serializable> layout) {
+            int reconnectDelayMillis, final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
         if (Strings.isEmpty(host)) {
             throw new IllegalArgumentException("A host name is required");
         }
         if (port <= 0) {
             port = DEFAULT_PORT;
         }
-        if (delayMillis == 0) {
-            delayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS;
+        if (reconnectDelayMillis == 0) {
+            reconnectDelayMillis = DEFAULT_RECONNECTION_DELAY_MILLIS;
         }
-        return (TcpSocketManager) getManager("TCP:" + host + ':' + port, new FactoryData(host, port,
-                connectTimeoutMillis, delayMillis, immediateFail, layout), FACTORY);
+        return (TcpSocketManager) getManager("TCP:" + host + ':' + port, new FactoryData(
+                host, port, connectTimeoutMillis, reconnectDelayMillis, immediateFail, layout, bufferSize), FACTORY);
     }
 
     @Override
     protected void write(final byte[] bytes, final int offset, final int length, final boolean immediateFlush)  {
         if (socket == null) {
-            if (connector != null && !immediateFail) {
-                connector.latch();
+            if (reconnector != null && !immediateFail) {
+                reconnector.latch();
             }
             if (socket == null) {
                 final String msg = "Error writing to " + getName() + " socket not available";
@@ -135,11 +137,11 @@ public class TcpSocketManager extends AbstractSocketManager {
                     outputStream.flush();
                 }
             } catch (final IOException ex) {
-                if (retry && connector == null) {
-                    connector = new Reconnector(this);
-                    connector.setDaemon(true);
-                    connector.setPriority(Thread.MIN_PRIORITY);
-                    connector.start();
+                if (retry && reconnector == null) {
+                    reconnector = new Reconnector(this);
+                    reconnector.setDaemon(true);
+                    reconnector.setPriority(Thread.MIN_PRIORITY);
+                    reconnector.start();
                 }
                 final String msg = "Error writing to " + getName();
                 throw new AppenderLoggingException(msg, ex);
@@ -150,10 +152,19 @@ public class TcpSocketManager extends AbstractSocketManager {
     @Override
     protected synchronized void closeOutputStream() {
         super.closeOutputStream();
-        if (connector != null) {
-            connector.shutdown();
-            connector.interrupt();
-            connector = null;
+        if (reconnector != null) {
+            reconnector.shutdown();
+            reconnector.interrupt();
+            reconnector = null;
+        }
+        final Socket oldSocket = socket;
+        socket = null;
+        if (oldSocket != null) {
+            try {
+                oldSocket.close();
+            } catch (IOException e) {
+                LOGGER.error("Could not close socket {}", socket);
+            }
         }
     }
 
@@ -221,7 +232,7 @@ public class TcpSocketManager extends AbstractSocketManager {
 
                         setOutputStream(newOS);
                         socket = sock;
-                        connector = null;
+                        reconnector = null;
                         shutdown = true;
                     }
                     LOGGER.debug("Connection to " + host + ':' + port + " reestablished.");
@@ -256,18 +267,20 @@ public class TcpSocketManager extends AbstractSocketManager {
         private final String host;
         private final int port;
         private final int connectTimeoutMillis;
-        private final int delayMillis;
+        private final int reconnectDelayMillis;
         private final boolean immediateFail;
         private final Layout<? extends Serializable> layout;
+        private final int bufferSize;
 
-        public FactoryData(final String host, final int port, final int connectTimeoutMillis, final int delayMillis,
-                           final boolean immediateFail, final Layout<? extends Serializable> layout) {
+        public FactoryData(final String host, final int port, final int connectTimeoutMillis, final int reconnectDelayMillis,
+                           final boolean immediateFail, final Layout<? extends Serializable> layout, final int bufferSize) {
             this.host = host;
             this.port = port;
             this.connectTimeoutMillis = connectTimeoutMillis;
-            this.delayMillis = delayMillis;
+            this.reconnectDelayMillis = reconnectDelayMillis;
             this.immediateFail = immediateFail;
             this.layout = layout;
+            this.bufferSize = bufferSize;
         }
     }
 
@@ -292,16 +305,16 @@ public class TcpSocketManager extends AbstractSocketManager {
                 socket.connect(new InetSocketAddress(data.host, data.port), data.connectTimeoutMillis);
                 os = socket.getOutputStream();
                 return new TcpSocketManager(name, os, socket, inetAddress, data.host, data.port,
-                        data.connectTimeoutMillis, data.delayMillis, data.immediateFail, data.layout);
+                        data.connectTimeoutMillis, data.reconnectDelayMillis, data.immediateFail, data.layout, data.bufferSize);
             } catch (final IOException ex) {
                 LOGGER.error("TcpSocketManager (" + name + ") " + ex, ex);
                 os = new ByteArrayOutputStream();
             }
-            if (data.delayMillis == 0) {
+            if (data.reconnectDelayMillis == 0) {
                 return null;
             }
             return new TcpSocketManager(name, os, null, inetAddress, data.host, data.port, data.connectTimeoutMillis,
-                    data.delayMillis, data.immediateFail, data.layout);
+                    data.reconnectDelayMillis, data.immediateFail, data.layout, data.bufferSize);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/53e7bbc0/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 705b242..4046bc0 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
@@ -44,10 +44,12 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.net.Protocol;
+import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.core.util.Throwables;
 import org.apache.logging.log4j.test.AvailablePortFinder;
 import org.junit.After;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -91,9 +93,9 @@ public class SocketAppenderTest {
     public void teardown() {
         final Map<String, Appender> map = root.getAppenders();
         for (final Map.Entry<String, Appender> entry : map.entrySet()) {
-            final Appender app = entry.getValue();
-            root.removeAppender(app);
-            app.stop();
+            final Appender appender = entry.getValue();
+            root.removeAppender(appender);
+            appender.stop();
         }
         tcpCount = 0;
         udpCount = 0;
@@ -101,7 +103,21 @@ public class SocketAppenderTest {
     }
 
     @Test
-    public void testTcpAppender() throws Exception {
+    public void testTcpAppenderDefaultBufferSize() throws Exception {
+        testTcpAppender(Constants.ENCODER_BYTE_BUFFER_SIZE);
+    }
+
+    @Test
+    public void testTcpAppenderSmallestBufferSize() throws Exception {
+        testTcpAppender(1);
+    }
+
+    @Test
+    public void testTcpAppenderLargeBufferSize() throws Exception {
+        testTcpAppender(Constants.ENCODER_BYTE_BUFFER_SIZE * 100);
+    }
+
+    private void testTcpAppender(final int bufferSize) throws Exception {
 
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
@@ -110,9 +126,11 @@ public class SocketAppenderTest {
                 .withReconnectDelayMillis(-1)
                 .withName("test")
                 .withImmediateFail(false)
+                .withBufferSize(bufferSize)
                 .build();
         // @formatter:on
         appender.start();
+        Assert.assertEquals(bufferSize, appender.getManager().getByteBuffer().capacity());
 
         // set appender on root and set level to debug
         root.addAppender(appender);
@@ -159,6 +177,7 @@ public class SocketAppenderTest {
                 .build();
         // @formatter:on
         assertNotNull(appender);
+        appender.stop();
     }
 
     @Test
@@ -242,7 +261,7 @@ public class SocketAppenderTest {
         } catch (final Exception ex) {
             // TODO: move exception to @Test(expect = Exception.class)
             // Failure is expected.
-            ex.printStackTrace();
+            // ex.printStackTrace();
         }
     }
 


[09/10] logging-log4j2 git commit: Test [LOG4J2-1558] SocketAppender should support IO buffering.

Posted by gg...@apache.org.
Test [LOG4J2-1558]
SocketAppender should support IO buffering.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/eeff0c59
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/eeff0c59
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/eeff0c59

Branch: refs/heads/master
Commit: eeff0c59e50e287e5aec32c31ae726cf8993d4bd
Parents: 6323258
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 15:11:09 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 15:11:09 2016 -0700

----------------------------------------------------------------------
 .../appender/SocketAppenderBufferSizeTest.java  | 77 ++++++++++++++++++++
 log4j-core/src/test/resources/log4j-empty.xml   | 20 +++++
 2 files changed, 97 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eeff0c59/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBufferSizeTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBufferSizeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBufferSizeTest.java
new file mode 100644
index 0000000..9d0c9bf
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBufferSizeTest.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.appender.SocketAppenderTest.TcpSocketTestServer;
+import org.apache.logging.log4j.core.util.Constants;
+import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.test.AvailablePortFinder;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SocketAppenderBufferSizeTest {
+
+    private TcpSocketTestServer tcpServer;
+
+    private LoggerContext loggerContext;
+    private Logger logger;
+
+    @Rule
+    public LoggerContextRule loggerContextRule = new LoggerContextRule("log4j-empty.xml");
+
+    @Before
+    public void setup() throws Exception {
+        tcpServer = new TcpSocketTestServer(AvailablePortFinder.getNextAvailable());
+        tcpServer.start();
+        ThreadContext.clearAll();
+        loggerContext = loggerContextRule.getLoggerContext();
+        logger = loggerContext.getLogger(SocketAppenderBufferSizeTest.class.getName());
+    }
+
+    @After
+    public void teardown() {
+        tcpServer.shutdown();
+        loggerContext = null;
+        logger = null;
+        tcpServer.reset();
+        ThreadContext.clearAll();
+    }
+
+    @Test
+    public void testTcpAppenderDefaultBufferSize() throws Exception {
+        SocketAppenderTest.testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE);
+    }
+
+    @Test
+    public void testTcpAppenderLargeBufferSize() throws Exception {
+        SocketAppenderTest.testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE * 100);
+    }
+
+    @Test
+    public void testTcpAppenderSmallestBufferSize() throws Exception {
+        SocketAppenderTest.testTcpAppender(tcpServer, logger, 1);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/eeff0c59/log4j-core/src/test/resources/log4j-empty.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/log4j-empty.xml b/log4j-core/src/test/resources/log4j-empty.xml
new file mode 100644
index 0000000..f528061
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-empty.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<Configuration status="INFO" name="TestEmpty">
+</Configuration>


[07/10] logging-log4j2 git commit: Better test, less globals.

Posted by gg...@apache.org.
Better test, less globals.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/70186ff3
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/70186ff3
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/70186ff3

Branch: refs/heads/master
Commit: 70186ff381643f9c0712bd5e97bcfa7c239f57c2
Parents: f5dce6b
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 14:34:36 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 14:34:36 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/SocketAppenderTest.java | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/70186ff3/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 b60ae6b..d35ec8b 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
@@ -118,7 +118,7 @@ public class SocketAppenderTest {
         testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE);
     }
 
-    static void testTcpAppender(TcpSocketTestServer tcpTestServer, final Logger rootLogger, final int bufferSize)
+    static void testTcpAppender(TcpSocketTestServer tcpTestServer, final Logger logger, final int bufferSize)
             throws Exception {
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
@@ -134,19 +134,19 @@ public class SocketAppenderTest {
         Assert.assertEquals(bufferSize, appender.getManager().getByteBuffer().capacity());
 
         // set appender on root and set level to debug
-        rootLogger.addAppender(appender);
-        rootLogger.setAdditive(false);
-        rootLogger.setLevel(Level.DEBUG);
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
         final String tcKey = "UUID";
         final String expectedUuidStr = UUID.randomUUID().toString();
         ThreadContext.put(tcKey, expectedUuidStr);
         ThreadContext.push(expectedUuidStr);
         final String expectedExMsg = "This is a test";
         try {
-            rootLogger.debug("This is a test message");
+            logger.debug("This is a test message");
             final Throwable child = new LoggingException(expectedExMsg);
-            rootLogger.error("Throwing an exception", child);
-            rootLogger.debug("This is another test message");
+            logger.error("Throwing an exception", child);
+            logger.debug("This is another test message");
         } finally {
             ThreadContext.remove(tcKey);
             ThreadContext.pop();
@@ -170,8 +170,7 @@ public class SocketAppenderTest {
     public void testDefaultProtocol() throws Exception {
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
-                .withHost("localhost")
-                .withPort(PORT)
+                .withPort(tcpServer.getLocalPort())
                 .withReconnectDelayMillis(-1)
                 .withName("test")
                 .withImmediateFail(false)
@@ -192,8 +191,7 @@ public class SocketAppenderTest {
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
                 .withProtocol(Protocol.UDP)
-                .withHost("localhost")
-                .withPort(PORT)
+                .withPort(tcpServer.getLocalPort())
                 .withReconnectDelayMillis(-1)
                 .withName("test")
                 .withImmediateFail(false)


[02/10] logging-log4j2 git commit: Merge remote-tracking branch 'origin/master' into LOG4J2-1558

Posted by gg...@apache.org.
Merge remote-tracking branch 'origin/master' into LOG4J2-1558

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8f5ac530
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8f5ac530
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8f5ac530

Branch: refs/heads/master
Commit: 8f5ac5307d5917549f9ac4f900b154604af18eeb
Parents: 53e7bbc f8794cd
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 07:34:35 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 07:34:35 2016 -0700

----------------------------------------------------------------------
 .../impl/DefaultConfigurationBuilder.java       | 22 +++++++++++---------
 .../builder/ConfigurationBuilderTest.java       |  2 +-
 2 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------



[08/10] logging-log4j2 git commit: Make ivars private again.

Posted by gg...@apache.org.
Make ivars private again.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/6323258b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/6323258b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/6323258b

Branch: refs/heads/master
Commit: 6323258b169d717ce88714d33191ed31a416551d
Parents: 70186ff
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 14:35:25 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 14:35:25 2016 -0700

----------------------------------------------------------------------
 .../apache/logging/log4j/core/appender/SocketAppenderTest.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6323258b/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 d35ec8b..5175cfe 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
@@ -63,8 +63,8 @@ public class SocketAppenderTest {
     private static final int DYN_PORT = AvailablePortFinder.getNextAvailable();
     private static final int ERROR_PORT = AvailablePortFinder.getNextAvailable();
 
-    static TcpSocketTestServer tcpServer;
-    static UdpSocketTestServer udpServer;
+    private static TcpSocketTestServer tcpServer;
+    private static UdpSocketTestServer udpServer;
 
     private LoggerContext context = LoggerContext.getContext();
     private Logger logger = context.getLogger(SocketAppenderTest.class.getName());


[10/10] logging-log4j2 git commit: [LOG4J2-1558] SocketAppender should support IO buffering.

Posted by gg...@apache.org.
[LOG4J2-1558] SocketAppender should support IO buffering.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5c99b6be
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5c99b6be
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5c99b6be

Branch: refs/heads/master
Commit: 5c99b6bed5b41bb00c0a511ea885a01a1f52d0e1
Parents: eeff0c5
Author: ggregory <gg...@apache.org>
Authored: Sat Sep 3 10:40:38 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Sat Sep 3 10:40:38 2016 -0700

----------------------------------------------------------------------
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5c99b6be/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 568aff8..994c0e1 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -102,6 +102,9 @@
       <action issue="LOG4J2-1502" dev="ggregory" type="fix" due-to="Sumit Singhal">
         CsvParameterLayout and CsvLogEventLayout insert NUL characters if data starts with {, (, [ or "
       </action>
+      <action issue="LOG4J2-1558" dev="ggregory" type="add">
+        SocketAppender should support IO buffering.
+      </action>
       <action issue="LOG4J2-1557" dev="ggregory" type="add">
         Add a Builder for the SocketAppender (deprecates factory method).
       </action>


[04/10] logging-log4j2 git commit: Clean up test to use fewer global variables.

Posted by gg...@apache.org.
Clean up test to use fewer global variables.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3659a825
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3659a825
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3659a825

Branch: refs/heads/master
Commit: 3659a825bfa6641bd9391e5c3f99e4ee9fe99e7c
Parents: 5265680
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 13:35:48 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 13:35:48 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/SocketAppenderTest.java | 130 ++++++++++++-------
 1 file changed, 83 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3659a825/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 4046bc0..648feed 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
@@ -51,6 +51,7 @@ import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -62,16 +63,11 @@ public class SocketAppenderTest {
     private static final int DYN_PORT = AvailablePortFinder.getNextAvailable();
     private static final int ERROR_PORT = AvailablePortFinder.getNextAvailable();
 
-    private static BlockingQueue<LogEvent> list = new ArrayBlockingQueue<>(10);
+    static TCPSocketServer tcpServer;
+    static UDPSocketServer udpServer;
 
-    private static TCPSocketServer tcpServer;
-    private static UDPSocketServer udpServer;
-
-    LoggerContext context = LoggerContext.getContext();
-    Logger root = context.getLogger("SocketAppenderTest");
-
-    private static int tcpCount = 0;
-    private static int udpCount = 0;
+    private LoggerContext context = LoggerContext.getContext();
+    private Logger root = context.getLogger(SocketAppenderTest.class.getName());
 
     @BeforeClass
     public static void setupClass() throws Exception {
@@ -86,39 +82,41 @@ public class SocketAppenderTest {
     public static void cleanupClass() {
         tcpServer.shutdown();
         udpServer.shutdown();
-        list.clear();
     }
 
     @After
     public void teardown() {
+        removeAndStopAppenders();
+        reset();
+    }
+
+    void removeAndStopAppenders() {
         final Map<String, Appender> map = root.getAppenders();
         for (final Map.Entry<String, Appender> entry : map.entrySet()) {
             final Appender appender = entry.getValue();
             root.removeAppender(appender);
             appender.stop();
         }
-        tcpCount = 0;
-        udpCount = 0;
-        list.clear();
     }
 
-    @Test
-    public void testTcpAppenderDefaultBufferSize() throws Exception {
-        testTcpAppender(Constants.ENCODER_BYTE_BUFFER_SIZE);
+    static void reset() {
+        tcpServer.reset();
+        udpServer.reset();
     }
 
     @Test
-    public void testTcpAppenderSmallestBufferSize() throws Exception {
-        testTcpAppender(1);
+    public void testTcpAppender1() throws Exception {
+        testTcpAppender(root, Constants.ENCODER_BYTE_BUFFER_SIZE, tcpServer.getQueue());
     }
 
     @Test
-    public void testTcpAppenderLargeBufferSize() throws Exception {
-        testTcpAppender(Constants.ENCODER_BYTE_BUFFER_SIZE * 100);
+    @Ignore("WIP Bug when this method runs after testTcpAppender1()")
+    public void testTcpAppender2() throws Exception {
+        testTcpAppender(root, Constants.ENCODER_BYTE_BUFFER_SIZE, tcpServer.getQueue());
     }
 
-    private void testTcpAppender(final int bufferSize) throws Exception {
-
+    static void testTcpAppender(final Logger rootLogger, final int bufferSize, final BlockingQueue<LogEvent> blockingQ)
+            throws Exception {
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
                 .withHost("localhost")
@@ -133,33 +131,33 @@ public class SocketAppenderTest {
         Assert.assertEquals(bufferSize, appender.getManager().getByteBuffer().capacity());
 
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
+        rootLogger.addAppender(appender);
+        rootLogger.setAdditive(false);
+        rootLogger.setLevel(Level.DEBUG);
         final String tcKey = "UUID";
         final String expectedUuidStr = UUID.randomUUID().toString();
         ThreadContext.put(tcKey, expectedUuidStr);
         ThreadContext.push(expectedUuidStr);
         final String expectedExMsg = "This is a test";
         try {
-            root.debug("This is a test message");
+            rootLogger.debug("This is a test message");
             final Throwable child = new LoggingException(expectedExMsg);
-            root.error("Throwing an exception", child);
-            root.debug("This is another test message");
+            rootLogger.error("Throwing an exception", child);
+            rootLogger.debug("This is another test message");
         } finally {
             ThreadContext.remove(tcKey);
             ThreadContext.pop();
         }
         Thread.sleep(250);
-        LogEvent event = list.poll(3, TimeUnit.SECONDS);
+        LogEvent event = blockingQ.poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a test message"));
-        assertTrue("Message not delivered via TCP", tcpCount > 0);
+        assertTrue("Message not delivered via TCP", tcpServer.getCount() > 0);
         assertEquals(expectedUuidStr, event.getContextMap().get(tcKey));
-        event = list.poll(3, TimeUnit.SECONDS);
+        event = blockingQ.poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("Throwing an exception"));
-        assertTrue("Message not delivered via TCP", tcpCount > 1);
+        assertTrue("Message not delivered via TCP", tcpServer.getCount() > 1);
         assertEquals(expectedUuidStr, event.getContextStack().pop());
         assertNotNull(event.getThrownProxy());
         assertEquals(expectedExMsg, event.getThrownProxy().getMessage());
@@ -205,10 +203,10 @@ public class SocketAppenderTest {
         root.setAdditive(false);
         root.setLevel(Level.DEBUG);
         root.debug("This is a udp message");
-        final LogEvent event = list.poll(3, TimeUnit.SECONDS);
+        final LogEvent event = udpServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a udp message"));
-        assertTrue("Message not delivered via UDP", udpCount > 0);
+        assertTrue("Message not delivered via UDP", udpServer.getCount() > 0);
     }
 
     @Test
@@ -229,12 +227,17 @@ public class SocketAppenderTest {
         root.setAdditive(false);
         root.setLevel(Level.DEBUG);
 
-        new TCPSocketServer(DYN_PORT).start();
+        final TCPSocketServer tcpSocketServer = new TCPSocketServer(DYN_PORT);
+        try {
+            tcpSocketServer.start();
 
-        root.debug("This message is written because a deadlock never.");
+            root.debug("This message is written because a deadlock never.");
 
-        final LogEvent event = list.poll(3, TimeUnit.SECONDS);
-        assertNotNull("No event retrieved", event);
+            final LogEvent event = tcpSocketServer.getQueue().poll(3, TimeUnit.SECONDS);
+            assertNotNull("No event retrieved", event);
+        } finally {
+            tcpSocketServer.shutdown();
+        }
     }
 
     @Test
@@ -270,9 +273,17 @@ public class SocketAppenderTest {
         private boolean shutdown = false;
         private Thread thread;
         private final CountDownLatch latch = new CountDownLatch(1);
+        private volatile int count = 0;
+        private final BlockingQueue<LogEvent> queue;
 
         public UDPSocketServer() throws IOException {
             this.sock = new DatagramSocket(PORT);
+            this.queue = new ArrayBlockingQueue<>(10);
+        }
+
+        public void reset() {
+            queue.clear();
+            count = 0;
         }
 
         public void shutdown() {
@@ -290,10 +301,10 @@ public class SocketAppenderTest {
                     latch.countDown();
                     sock.receive(packet);
                     final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(packet.getData()));
-                    ++udpCount;
+                    ++count;
                     final Object received = ois.readObject(); // separate lines for debugging
                     final LogEvent event = (LogEvent) received;
-                    list.add(event);
+                    queue.add(event);
                 }
             } catch (final Throwable e) {
                 e.printStackTrace();
@@ -302,15 +313,31 @@ public class SocketAppenderTest {
                 }
             }
         }
+
+        public int getCount() {
+            return count;
+        }
+
+        public BlockingQueue<LogEvent> getQueue() {
+            return queue;
+        }
     }
 
     public static class TCPSocketServer extends Thread {
 
         private final ServerSocket sock;
-        private boolean shutdown = false;
+        private volatile boolean shutdown = false;
+        private volatile int count = 0;
+        private final BlockingQueue<LogEvent> queue;
 
         public TCPSocketServer(final int port) throws IOException {
             this.sock = new ServerSocket(port);
+            this.queue = new ArrayBlockingQueue<>(10);
+        }
+
+        public void reset() {
+            queue.clear();
+            count = 0;
         }
 
         public void shutdown() {
@@ -321,12 +348,13 @@ public class SocketAppenderTest {
         @Override
         public void run() {
             try {
-                final Socket socket = sock.accept();
-                if (socket != null) {
-                    final ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
-                    while (!shutdown) {
-                        list.add((LogEvent) ois.readObject());
-                        ++tcpCount;
+                try (final Socket socket = sock.accept()) {
+                    if (socket != null) {
+                        final ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
+                        while (!shutdown) {
+                            queue.add((LogEvent) ois.readObject());
+                            ++count;
+                        }
                     }
                 }
             } catch (final EOFException eof) {
@@ -337,6 +365,14 @@ public class SocketAppenderTest {
                 }
             }
         }
+
+        public BlockingQueue<LogEvent> getQueue() {
+            return queue;
+        }
+
+        public int getCount() {
+            return count;
+        }
     }
 
 }


[03/10] logging-log4j2 git commit: Add 0-arg ctor.

Posted by gg...@apache.org.
Add 0-arg ctor.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/52656803
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/52656803
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/52656803

Branch: refs/heads/master
Commit: 526568039bf6accb9a0f79948a70ffee0a4bfda2
Parents: 8f5ac53
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 13:32:35 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 13:32:35 2016 -0700

----------------------------------------------------------------------
 .../org/apache/logging/log4j/junit/LoggerContextRule.java     | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/52656803/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java b/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
index b3ec1e0..032254e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/junit/LoggerContextRule.java
@@ -57,6 +57,13 @@ public class LoggerContextRule implements TestRule {
     private TimeUnit shutdownTimeUnit;
 
     /**
+     * Constructs a new LoggerContextRule without a configuration file.
+     */
+    public LoggerContextRule() {
+        this(null, null);
+    }
+
+    /**
      * Constructs a new LoggerContextRule for a given configuration file.
      *
      * @param configLocation


[05/10] logging-log4j2 git commit: Better test, less globals.

Posted by gg...@apache.org.
Better test, less globals.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/8cf7b108
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/8cf7b108
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/8cf7b108

Branch: refs/heads/master
Commit: 8cf7b1084887b1bfb6ce6bd6901480f6199625ae
Parents: 3659a82
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 14:06:44 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 14:06:44 2016 -0700

----------------------------------------------------------------------
 .../log4j/core/appender/SocketAppenderTest.java | 72 +++++++++++---------
 1 file changed, 40 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/8cf7b108/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 648feed..b60ae6b 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
@@ -63,38 +63,41 @@ public class SocketAppenderTest {
     private static final int DYN_PORT = AvailablePortFinder.getNextAvailable();
     private static final int ERROR_PORT = AvailablePortFinder.getNextAvailable();
 
-    static TCPSocketServer tcpServer;
-    static UDPSocketServer udpServer;
+    static TcpSocketTestServer tcpServer;
+    static UdpSocketTestServer udpServer;
 
     private LoggerContext context = LoggerContext.getContext();
-    private Logger root = context.getLogger(SocketAppenderTest.class.getName());
+    private Logger logger = context.getLogger(SocketAppenderTest.class.getName());
 
     @BeforeClass
     public static void setupClass() throws Exception {
-        tcpServer = new TCPSocketServer(PORT);
+        tcpServer = new TcpSocketTestServer(PORT);
         tcpServer.start();
-        udpServer = new UDPSocketServer();
+        udpServer = new UdpSocketTestServer();
         udpServer.start();
         (LoggerContext.getContext()).reconfigure();
+        ThreadContext.clearAll();
     }
 
     @AfterClass
     public static void cleanupClass() {
         tcpServer.shutdown();
         udpServer.shutdown();
+        ThreadContext.clearAll();
     }
 
     @After
     public void teardown() {
+        ThreadContext.clearAll();
         removeAndStopAppenders();
         reset();
     }
 
     void removeAndStopAppenders() {
-        final Map<String, Appender> map = root.getAppenders();
+        final Map<String, Appender> map = logger.getAppenders();
         for (final Map.Entry<String, Appender> entry : map.entrySet()) {
             final Appender appender = entry.getValue();
-            root.removeAppender(appender);
+            logger.removeAppender(appender);
             appender.stop();
         }
     }
@@ -106,21 +109,21 @@ public class SocketAppenderTest {
 
     @Test
     public void testTcpAppender1() throws Exception {
-        testTcpAppender(root, Constants.ENCODER_BYTE_BUFFER_SIZE, tcpServer.getQueue());
+        testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE);
     }
 
     @Test
     @Ignore("WIP Bug when this method runs after testTcpAppender1()")
     public void testTcpAppender2() throws Exception {
-        testTcpAppender(root, Constants.ENCODER_BYTE_BUFFER_SIZE, tcpServer.getQueue());
+        testTcpAppender(tcpServer, logger, Constants.ENCODER_BYTE_BUFFER_SIZE);
     }
 
-    static void testTcpAppender(final Logger rootLogger, final int bufferSize, final BlockingQueue<LogEvent> blockingQ)
+    static void testTcpAppender(TcpSocketTestServer tcpTestServer, final Logger rootLogger, final int bufferSize)
             throws Exception {
         // @formatter:off
         final SocketAppender appender = SocketAppender.newBuilder()
                 .withHost("localhost")
-                .withPort(PORT)
+                .withPort(tcpTestServer.getLocalPort())
                 .withReconnectDelayMillis(-1)
                 .withName("test")
                 .withImmediateFail(false)
@@ -149,15 +152,15 @@ public class SocketAppenderTest {
             ThreadContext.pop();
         }
         Thread.sleep(250);
-        LogEvent event = blockingQ.poll(3, TimeUnit.SECONDS);
+        LogEvent event = tcpTestServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a test message"));
-        assertTrue("Message not delivered via TCP", tcpServer.getCount() > 0);
+        assertTrue("Message not delivered via TCP", tcpTestServer.getCount() > 0);
         assertEquals(expectedUuidStr, event.getContextMap().get(tcKey));
-        event = blockingQ.poll(3, TimeUnit.SECONDS);
+        event = tcpTestServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("Throwing an exception"));
-        assertTrue("Message not delivered via TCP", tcpServer.getCount() > 1);
+        assertTrue("Message not delivered via TCP", tcpTestServer.getCount() > 1);
         assertEquals(expectedUuidStr, event.getContextStack().pop());
         assertNotNull(event.getThrownProxy());
         assertEquals(expectedExMsg, event.getThrownProxy().getMessage());
@@ -199,10 +202,10 @@ public class SocketAppenderTest {
         appender.start();
 
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
-        root.debug("This is a udp message");
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
+        logger.debug("This is a udp message");
         final LogEvent event = udpServer.getQueue().poll(3, TimeUnit.SECONDS);
         assertNotNull("No event retrieved", event);
         assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a udp message"));
@@ -223,15 +226,15 @@ public class SocketAppenderTest {
         // @formatter:on
         appender.start();
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
 
-        final TCPSocketServer tcpSocketServer = new TCPSocketServer(DYN_PORT);
+        final TcpSocketTestServer tcpSocketServer = new TcpSocketTestServer(DYN_PORT);
         try {
             tcpSocketServer.start();
 
-            root.debug("This message is written because a deadlock never.");
+            logger.debug("This message is written because a deadlock never.");
 
             final LogEvent event = tcpSocketServer.getQueue().poll(3, TimeUnit.SECONDS);
             assertNotNull("No event retrieved", event);
@@ -254,12 +257,12 @@ public class SocketAppenderTest {
         // @formatter:on
         appender.start();
         // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setAdditive(false);
-        root.setLevel(Level.DEBUG);
+        logger.addAppender(appender);
+        logger.setAdditive(false);
+        logger.setLevel(Level.DEBUG);
 
         try {
-            root.debug("This message is written because a deadlock never.");
+            logger.debug("This message is written because a deadlock never.");
             fail("No Exception was thrown");
         } catch (final Exception ex) {
             // TODO: move exception to @Test(expect = Exception.class)
@@ -268,7 +271,8 @@ public class SocketAppenderTest {
         }
     }
 
-    public static class UDPSocketServer extends Thread {
+    public static class UdpSocketTestServer extends Thread {
+        
         private final DatagramSocket sock;
         private boolean shutdown = false;
         private Thread thread;
@@ -276,7 +280,7 @@ public class SocketAppenderTest {
         private volatile int count = 0;
         private final BlockingQueue<LogEvent> queue;
 
-        public UDPSocketServer() throws IOException {
+        public UdpSocketTestServer() throws IOException {
             this.sock = new DatagramSocket(PORT);
             this.queue = new ArrayBlockingQueue<>(10);
         }
@@ -323,18 +327,22 @@ public class SocketAppenderTest {
         }
     }
 
-    public static class TCPSocketServer extends Thread {
+    public static class TcpSocketTestServer extends Thread {
 
         private final ServerSocket sock;
         private volatile boolean shutdown = false;
         private volatile int count = 0;
         private final BlockingQueue<LogEvent> queue;
 
-        public TCPSocketServer(final int port) throws IOException {
+        public TcpSocketTestServer(final int port) throws IOException {
             this.sock = new ServerSocket(port);
             this.queue = new ArrayBlockingQueue<>(10);
         }
 
+        public int getLocalPort() {
+            return sock.getLocalPort();
+        }
+        
         public void reset() {
             queue.clear();
             count = 0;


[06/10] logging-log4j2 git commit: Let "localhost" be the default host.

Posted by gg...@apache.org.
Let "localhost" be the default host.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f5dce6bb
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f5dce6bb
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f5dce6bb

Branch: refs/heads/master
Commit: f5dce6bb273c39f2da58702a00167a515e36cf9e
Parents: 8cf7b10
Author: ggregory <gg...@apache.org>
Authored: Fri Sep 2 14:32:44 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Fri Sep 2 14:32:44 2016 -0700

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/appender/SocketAppender.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f5dce6bb/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 d6eb27e..de1663b 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
@@ -70,7 +70,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
         private int connectTimeoutMillis;
 
         @PluginBuilderAttribute
-        private String host;
+        private String host = "localhost";
 
         @PluginBuilderAttribute
         private boolean immediateFail = true;