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.
*