You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2016/04/08 14:04:02 UTC

[10/50] logging-log4j2 git commit: LOG4J2-1343 SocketAppenders should explicitly _not_ use the garbage-free Layout mechanism for now (until solutions for the noted problems are found)

LOG4J2-1343 SocketAppenders should explicitly _not_ use the garbage-free Layout mechanism for now (until solutions for the noted problems are found)


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

Branch: refs/heads/LOG4J2-1356
Commit: dc78ca08c4a32b95f44254718a7379347cc2ded4
Parents: 723c49f
Author: rpopma <rp...@apache.org>
Authored: Thu Apr 7 02:57:26 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Thu Apr 7 02:57:26 2016 +0900

----------------------------------------------------------------------
 .../log4j/core/appender/SocketAppender.java     | 21 ++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/dc78ca08/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 4a97189..6d0221e 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
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
 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.PluginAliases;
@@ -74,7 +75,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
 
     /**
      * Creates a socket appender.
-     * 
+     *
      * @param host
      *            The name of the host to connect to.
      * @param port
@@ -122,10 +123,10 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
             @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final boolean ignoreExceptions,
             @PluginElement("Layout") Layout<? extends Serializable> layout,
             @PluginElement("Filter") final Filter filter,
-            @PluginAttribute(value = "advertise", defaultBoolean = false) final boolean advertise, 
+            @PluginAttribute(value = "advertise", defaultBoolean = false) final boolean advertise,
             @PluginConfiguration final Configuration config) {
             // @formatter:on
-        
+
         if (layout == null) {
             layout = SerializedLayout.createLayout();
         }
@@ -149,7 +150,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
 
     /**
      * Creates a socket appender.
-     * 
+     *
      * @param host
      *            The name of the host to connect to.
      * @param portNum
@@ -200,7 +201,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
             final String ignore,
             Layout<? extends Serializable> layout,
             final Filter filter,
-            final String advertise, 
+            final String advertise,
             final Configuration config) {
             // @formatter:on
         boolean isFlush = Booleans.parseBoolean(immediateFlush, true);
@@ -216,7 +217,7 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
 
     /**
      * Creates an AbstractSocketManager for TCP, UDP, and SSL.
-     * 
+     *
      * @throws IllegalArgumentException
      *             if the protocol cannot be handled.
      */
@@ -243,4 +244,12 @@ public class SocketAppender extends AbstractOutputStreamAppender<AbstractSocketM
             throw new IllegalArgumentException(protocol.toString());
         }
     }
+
+    @Override
+    protected void directEncodeEvent(final LogEvent event) {
+        // Disable garbage-free logging for now:
+        // problem with TCP: synchronization on manager in Reconnector thread would give deadlock.
+        // problem with UDP: 8K buffer size means that largish messages get broken up into chunks
+        writeByteArrayToManager(event); // revert to classic (non-garbage free) logging
+    }
 }