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

[22/36] logging-log4j2 git commit: Use TransferQueue::tryTransfer() when available in AsyncAppender

Use TransferQueue::tryTransfer() when available in AsyncAppender


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

Branch: refs/heads/master
Commit: 059df7f57ec84b4a5b062616138aedd83cd626bb
Parents: aad08e7
Author: Matt Sicker <bo...@gmail.com>
Authored: Sat Jun 18 14:01:49 2016 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Sat Jun 18 14:01:49 2016 -0500

----------------------------------------------------------------------
 .../apache/logging/log4j/core/appender/AsyncAppender.java   | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/059df7f5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
index f7aa381..200a5b4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TransferQueue;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.logging.log4j.core.AbstractLogEvent;
@@ -151,7 +152,7 @@ public final class AsyncAppender extends AbstractAppender {
             logEvent.getMessage().getFormattedMessage(); // LOG4J2-763: ask message to freeze parameters
         }
         final Log4jLogEvent memento = Log4jLogEvent.createMemento(logEvent, includeLocation);
-        if (!queue.offer(memento)) {
+        if (!transfer(memento)) {
             if (blocking) {
                 // delegate to the event router (which may discard, enqueue and block, or log in current thread)
                 final EventRoute route = asyncQueueFullPolicy.getRoute(thread.getId(), memento.getLevel());
@@ -163,6 +164,12 @@ public final class AsyncAppender extends AbstractAppender {
         }
     }
 
+    private boolean transfer(final LogEvent memento) {
+        return queue instanceof TransferQueue
+            ? ((TransferQueue<LogEvent>) queue).tryTransfer(memento)
+            : queue.offer(memento);
+    }
+
     /**
      * FOR INTERNAL USE ONLY.
      *