LOG4J2-493 AsyncLoggerContext now has an AsyncLoggerHelper field, essentially managing one Disruptor/Executor per context
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/12f90a9f Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/12f90a9f Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/12f90a9f Branch: refs/heads/LOG4J2-1161 Commit: 12f90a9f1f615b3bfb0bdc104698b1495eab0e20 Parents: 586920b Author: rpopma <rpo...@apache.org> Authored: Thu Oct 22 10:36:37 2015 +0900 Committer: rpopma <rpo...@apache.org> Committed: Thu Oct 22 10:36:37 2015 +0900 ---------------------------------------------------------------------- .../log4j/core/async/AsyncLoggerContext.java | 26 +++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12f90a9f/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java index 44bc41f..f9e707b 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerContext.java @@ -21,6 +21,7 @@ import java.net.URI; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.jmx.RingBufferAdmin; import org.apache.logging.log4j.message.MessageFactory; /** @@ -29,29 +30,35 @@ import org.apache.logging.log4j.message.MessageFactory; public class AsyncLoggerContext extends LoggerContext { private static final long serialVersionUID = 1L; + + private final AsyncLoggerHelper helper; public AsyncLoggerContext(final String name) { super(name); + helper = new AsyncLoggerHelper(); } public AsyncLoggerContext(final String name, final Object externalContext) { super(name, externalContext); + helper = new AsyncLoggerHelper(); } public AsyncLoggerContext(final String name, final Object externalContext, final URI configLocn) { super(name, externalContext, configLocn); + helper = new AsyncLoggerHelper(); } public AsyncLoggerContext(final String name, final Object externalContext, final String configLocn) { super(name, externalContext, configLocn); + helper = new AsyncLoggerHelper(); } @Override protected Logger newInstance(final LoggerContext ctx, final String name, final MessageFactory messageFactory) { - return new AsyncLogger(ctx, name, messageFactory); + return new AsyncLogger(ctx, name, messageFactory, helper); } /* (non-Javadoc) @@ -59,7 +66,7 @@ public class AsyncLoggerContext extends LoggerContext { */ @Override public void start() { - AsyncLoggerHelper.start(); + helper.start(); super.start(); } @@ -68,13 +75,24 @@ public class AsyncLoggerContext extends LoggerContext { */ @Override public void start(Configuration config) { - AsyncLoggerHelper.start(); + helper.start(); super.start(config); } @Override public void stop() { - AsyncLoggerHelper.stop(); // first stop Disruptor + helper.stop(); // first stop Disruptor super.stop(); } + + /** + * Creates and returns a new {@code RingBufferAdmin} that instruments the ringbuffer of the {@code AsyncLogger} + * objects. + * + * @param contextName name of this {@code AsyncLoggerContext} + * @return a new {@code RingBufferAdmin} that instruments the ringbuffer + */ + public RingBufferAdmin createRingBufferAdmin() { + return helper.createRingBufferAdmin(getName()); + } }