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

[13/23] logging-log4j2 git commit: LOG4J2-1343 make appending methods protected

LOG4J2-1343 make appending methods protected


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

Branch: refs/heads/LOG4J2-1343-no-gc-outputstreamappenders
Commit: 085cb1f768ebaae741cc2db7e8fca787f205a804
Parents: 7cef3f9
Author: rpopma <rp...@apache.org>
Authored: Tue Apr 5 23:08:15 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Apr 5 23:08:15 2016 +0900

----------------------------------------------------------------------
 .../appender/AbstractOutputStreamAppender.java    | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/085cb1f7/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 62f09c6..b968af2 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
@@ -111,28 +111,32 @@ public abstract class AbstractOutputStreamAppender<M extends OutputStreamManager
         }
     }
 
-    private void tryAppend(final LogEvent event) {
+    protected void tryAppend(final LogEvent event) {
         if (Constants.ENABLE_DIRECT_ENCODERS) {
             directEncodeEvent(event);
         } else {
-            final byte[] bytes = getLayout().toByteArray(event);
-            if (bytes != null && bytes.length > 0) {
-                manager.write(bytes, this.immediateFlush || event.isEndOfBatch());
-            }
+            writeByteArrayToManager(event);
         }
     }
 
-    private void directEncodeEvent(final LogEvent event) {
+    protected void directEncodeEvent(final LogEvent event) {
         synchronized (manager) {
             final ByteBufferDestination destination = manager.getByteBufferDestination();
             getLayout().encode(event, destination);
-            if (this.immediateFlush || event.isEndOfBatch()) {
+            if (manager.isAutoBuffered() || this.immediateFlush || event.isEndOfBatch()) {
                 destination.drain(destination.getByteBuffer()); // write buffer to outputStream
                 manager.flush();
             }
         }
     }
 
+    protected void writeByteArrayToManager(final LogEvent event) {
+        final byte[] bytes = getLayout().toByteArray(event);
+        if (bytes != null && bytes.length > 0) {
+            manager.write(bytes, this.immediateFlush || event.isEndOfBatch());
+        }
+    }
+
     private void reportAppendError(final Exception ex) {
         error("Unable to write to stream " + manager.getName() + " for appender " + getName() + ": " + ex);
     }