Does JCTools require Java 8? One option is for this release to leave out the Conversant library and only include JCTools and the TransferQueue.
On Wed, Sep 7, 2016 at 1:06 AM, Matt Sicker <boa...@gmail.com> wrote: > I can't believe I didn't notice it, but the Conversant library does > require Java 8. It's an optional dependency, so what to do? We can build on > Java 8 with a target for Java 7 and use the animal-sniffer Maven plugin to > make sure we don't accidentally use anything from Java 8. > > On 5 September 2016 at 22:45, Matt Sicker <boa...@gmail.com> wrote: > >> It looks like I may have merged prematurely then. I think I've been >> running builds using Java 8 as well and didn't notice this. Jenkins isn't >> even loading for me, so I can't see what the problem is on there. I'll take >> a look at this tomorrow, and if I can't fix the dependency issue, I'll back >> out part of this feature for now. >> >> On 5 September 2016 at 17:03, Ralph Goers <ralph.go...@dslextreme.com> >> wrote: >> >>> Jenkins and the release builds use Java 7, so you should certainly use >>> Java 7 from time to time. >>> >>> Ralph >>> >>> On Sep 5, 2016, at 2:33 PM, Gary Gregory <garydgreg...@gmail.com> wrote: >>> >>> Ah, no, Java 8: >>> >>> Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; >>> 2015-11-10T08:41:47-08:00) >>> Maven home: E:\Java\apache-maven-3.3.9 >>> Java version: 1.8.0_101, vendor: Oracle Corporation >>> Java home: C:\Program Files\Java\jdk1.8.0_101\jre >>> Default locale: en_US, platform encoding: Cp1252 >>> OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos" >>> >>> Gary >>> >>> On Mon, Sep 5, 2016 at 5:32 PM, Ralph Goers <ralph.go...@dslextreme.com> >>> wrote: >>> >>>> And you are building with Java 7? >>>> >>>> Ralph >>>> >>>> On Sep 5, 2016, at 2:18 PM, Gary Gregory <garydgreg...@gmail.com> >>>> wrote: >>>> >>>> Locally, I get: >>>> >>>> Failed tests: >>>> RoutingAppenderWithPurgingTest.routingTest:91 Incorrect number of >>>> appenders with IdlePurgePolicy. expected:<3> but was:<1> >>>> >>>> Gary >>>> >>>> On Mon, Sep 5, 2016 at 12:54 PM, Ralph Goers < >>>> ralph.go...@dslextreme.com> wrote: >>>> >>>>> For the record, I am voting -1 on this commit. It breaks the build >>>>> because the DisruptorBlockingQueueFactory has a dependency that requires >>>>> Java 8. The 2.7 release is blocked until this is corrected. >>>>> >>>>> Ralph >>>>> >>>>> > On Sep 4, 2016, at 11:38 AM, mattsic...@apache.org wrote: >>>>> > >>>>> > Convert BlockingQueueFactory into a plugin element >>>>> > >>>>> > Related to LOG4J2-1430. >>>>> > >>>>> > >>>>> > Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >>>>> > Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit >>>>> /65ec9bce >>>>> > Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/6 >>>>> 5ec9bce >>>>> > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/6 >>>>> 5ec9bce >>>>> > >>>>> > Branch: refs/heads/master >>>>> > Commit: 65ec9bcef74dc30ecab9c2091c6e0638d53490d8 >>>>> > Parents: 0848d7a >>>>> > Author: Matt Sicker <boa...@gmail.com> >>>>> > Authored: Fri Jun 17 18:51:08 2016 -0500 >>>>> > Committer: Matt Sicker <boa...@gmail.com> >>>>> > Committed: Fri Jun 17 18:51:08 2016 -0500 >>>>> > >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > .../log4j/core/appender/AsyncAppender.java | 24 +++++++++--- >>>>> > .../core/async/ArrayBlockingQueueFactory.java | 10 +++++ >>>>> > .../log4j/core/async/BlockingQueueFactory.java | 13 ++++++- >>>>> > .../async/DisruptorBlockingQueueFactory.java | 11 +++++- >>>>> > .../core/async/LinkedTransferQueueFactory.java | 10 +++++ >>>>> > .../log4j/core/appender/AsyncAppenderTest.java | 16 ++++---- >>>>> > .../BlockingQueueFactory-ArrayBlockingQueue.xml | 40 >>>>> ++++++++++++++++++++ >>>>> > ...ckingQueueFactory-DisruptorBlockingQueue.xml | 40 >>>>> ++++++++++++++++++++ >>>>> > ...BlockingQueueFactory-LinkedTransferQueue.xml | 40 >>>>> ++++++++++++++++++++ >>>>> > 9 files changed, 189 insertions(+), 15 deletions(-) >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/co >>>>> re/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/app >>>>> ender/AsyncAppender.java >>>>> > index 3c9c37c..dee5e50 100644 >>>>> > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/app >>>>> ender/AsyncAppender.java >>>>> > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/app >>>>> ender/AsyncAppender.java >>>>> > @@ -26,8 +26,11 @@ import org.apache.logging.log4j.core. >>>>> AbstractLogEvent; >>>>> > import org.apache.logging.log4j.core.Appender; >>>>> > import org.apache.logging.log4j.core.Filter; >>>>> > import org.apache.logging.log4j.core.LogEvent; >>>>> > +import org.apache.logging.log4j.core.async.ArrayBlockingQueueFactor >>>>> y; >>>>> > import org.apache.logging.log4j.core.async.AsyncQueueFullPolicy; >>>>> > import org.apache.logging.log4j.core.async.AsyncQueueFullPolicyFact >>>>> ory; >>>>> > +import org.apache.logging.log4j.core.async.BlockingQueueFactory; >>>>> > +import org.apache.logging.log4j.core.async.BlockingQueueFactoryUtil >>>>> ; >>>>> > import org.apache.logging.log4j.core.async.DiscardingAsyncQueueFull >>>>> Policy; >>>>> > import org.apache.logging.log4j.core.async.EventRoute; >>>>> > import org.apache.logging.log4j.core.config.AppenderControl; >>>>> > @@ -42,7 +45,6 @@ import org.apache.logging.log4j.core. >>>>> config.plugins.PluginConfiguration; >>>>> > import org.apache.logging.log4j.core.config.plugins.PluginElement; >>>>> > import org.apache.logging.log4j.core.config.plugins.validation.cons >>>>> traints.Required; >>>>> > import org.apache.logging.log4j.core.impl.Log4jLogEvent; >>>>> > -import org.apache.logging.log4j.core.async.BlockingQueueFactoryUtil >>>>> ; >>>>> > import org.apache.logging.log4j.core.util.Constants; >>>>> > >>>>> > /** >>>>> > @@ -73,8 +75,8 @@ public final class AsyncAppender extends >>>>> AbstractAppender { >>>>> > >>>>> > private AsyncAppender(final String name, final Filter filter, >>>>> final AppenderRef[] appenderRefs, >>>>> > final String errorRef, final int >>>>> queueSize, final boolean blocking, >>>>> > - final boolean ignoreExceptions, >>>>> > - final long shutdownTimeout, final >>>>> Configuration config, final boolean includeLocation) { >>>>> > + final boolean ignoreExceptions, final >>>>> long shutdownTimeout, final Configuration config, >>>>> > + final boolean includeLocation, final >>>>> BlockingQueueFactory<LogEvent> blockingQueueFactory) { >>>>> > super(name, filter, null, ignoreExceptions); >>>>> > this.queue = BlockingQueueFactoryUtil.<LogE >>>>> vent>getBlockingQueueFactory().create(queueSize); >>>>> > this.queueSize = queueSize; >>>>> > @@ -217,7 +219,9 @@ public final class AsyncAppender extends >>>>> AbstractAppender { >>>>> > } >>>>> > >>>>> > /** >>>>> > - * Create an AsyncAppender. >>>>> > + * Create an AsyncAppender. This method is retained for >>>>> backwards compatibility. New code should use the >>>>> > + * {@link Builder} instead. This factory will use {@link >>>>> ArrayBlockingQueueFactory} by default as was the behavior >>>>> > + * pre-2.7. >>>>> > * >>>>> > * @param appenderRefs The Appenders to reference. >>>>> > * @param errorRef An optional Appender to write to if >>>>> the queue is full or other errors occur. >>>>> > @@ -247,7 +251,7 @@ public final class AsyncAppender extends >>>>> AbstractAppender { >>>>> > } >>>>> > >>>>> > return new AsyncAppender(name, filter, appenderRefs, >>>>> errorRef, size, blocking, ignoreExceptions, >>>>> > - shutdownTimeout, config, includeLocation); >>>>> > + shutdownTimeout, config, includeLocation, new >>>>> ArrayBlockingQueueFactory<LogEvent>()); >>>>> > } >>>>> > >>>>> > @PluginBuilderFactory >>>>> > @@ -290,6 +294,9 @@ public final class AsyncAppender extends >>>>> AbstractAppender { >>>>> > @PluginBuilderAttribute >>>>> > private boolean ignoreExceptions = true; >>>>> > >>>>> > + @PluginElement(BlockingQueueFactory.ELEMENT_TYPE) >>>>> > + private BlockingQueueFactory<LogEvent> blockingQueueFactory >>>>> = new ArrayBlockingQueueFactory<>(); >>>>> > + >>>>> > public Builder setAppenderRefs(AppenderRef[] appenderRefs) { >>>>> > this.appenderRefs = appenderRefs; >>>>> > return this; >>>>> > @@ -340,10 +347,15 @@ public final class AsyncAppender extends >>>>> AbstractAppender { >>>>> > return this; >>>>> > } >>>>> > >>>>> > + public Builder setBlockingQueueFactory(final >>>>> BlockingQueueFactory<LogEvent> blockingQueueFactory) { >>>>> > + this.blockingQueueFactory = blockingQueueFactory; >>>>> > + return this; >>>>> > + } >>>>> > + >>>>> > @Override >>>>> > public AsyncAppender build() { >>>>> > return new AsyncAppender(name, filter, appenderRefs, >>>>> errorRef, bufferSize, blocking, ignoreExceptions, >>>>> > - shutdownTimeout, configuration, includeLocation); >>>>> > + shutdownTimeout, configuration, includeLocation, >>>>> blockingQueueFactory); >>>>> > } >>>>> > } >>>>> > >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/co >>>>> re/async/ArrayBlockingQueueFactory.java >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/main/java/org >>>>> /apache/logging/log4j/core/async/ArrayBlockingQueueFactory.java >>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/ArrayBlockingQueueFactory.java >>>>> > index e9c99b8..dcad78a 100644 >>>>> > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/ArrayBlockingQueueFactory.java >>>>> > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/ArrayBlockingQueueFactory.java >>>>> > @@ -3,14 +3,24 @@ package org.apache.logging.log4j.core.async; >>>>> > import java.util.concurrent.ArrayBlockingQueue; >>>>> > import java.util.concurrent.BlockingQueue; >>>>> > >>>>> > +import org.apache.logging.log4j.core.config.Node; >>>>> > +import org.apache.logging.log4j.core.config.plugins.Plugin; >>>>> > +import org.apache.logging.log4j.core.config.plugins.PluginFactory; >>>>> > + >>>>> > /** >>>>> > * Factory for creating instances of {@link ArrayBlockingQueue}. >>>>> > * >>>>> > * @since 2.7 >>>>> > */ >>>>> > +@Plugin(name = "ArrayBlockingQueue", category = Node.CATEGORY, >>>>> elementType = BlockingQueueFactory.ELEMENT_TYPE) >>>>> > public class ArrayBlockingQueueFactory<E> implements >>>>> BlockingQueueFactory<E> { >>>>> > @Override >>>>> > public BlockingQueue<E> create(int capacity) { >>>>> > return new ArrayBlockingQueue<>(capacity); >>>>> > } >>>>> > + >>>>> > + @PluginFactory >>>>> > + public static <E> ArrayBlockingQueueFactory<E> createFactory() { >>>>> > + return new ArrayBlockingQueueFactory<>(); >>>>> > + } >>>>> > } >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/co >>>>> re/async/BlockingQueueFactory.java >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/main/java/org >>>>> /apache/logging/log4j/core/async/BlockingQueueFactory.java >>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/BlockingQueueFactory.java >>>>> > index ccd1625..5763d1e 100644 >>>>> > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/BlockingQueueFactory.java >>>>> > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/BlockingQueueFactory.java >>>>> > @@ -9,7 +9,18 @@ import java.util.concurrent.BlockingQueue; >>>>> > */ >>>>> > public interface BlockingQueueFactory<E> { >>>>> > >>>>> > - String PROPERTY = "log4j.BlockingQueueFactory"; >>>>> > + /** >>>>> > + * The {@link org.apache.logging.log4j.core. >>>>> config.plugins.Plugin#elementType() element type} to use for plugins >>>>> > + * implementing this interface. >>>>> > + */ >>>>> > + String ELEMENT_TYPE = "BlockingQueueFactory"; >>>>> > >>>>> > + /** >>>>> > + * Creates a new BlockingQueue with the specified maximum >>>>> capacity. Note that not all implementations of >>>>> > + * BlockingQueue support a bounded capacity in which case the >>>>> value is ignored. >>>>> > + * >>>>> > + * @param capacity maximum size of the queue if supported >>>>> > + * @return a new BlockingQueue >>>>> > + */ >>>>> > BlockingQueue<E> create(int capacity); >>>>> > } >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/co >>>>> re/async/DisruptorBlockingQueueFactory.java >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/main/java/org >>>>> /apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java >>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/DisruptorBlockingQueueFactory.java >>>>> > index 8fb3707..add375d 100644 >>>>> > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/DisruptorBlockingQueueFactory.java >>>>> > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/DisruptorBlockingQueueFactory.java >>>>> > @@ -3,15 +3,24 @@ package org.apache.logging.log4j.core.async; >>>>> > import java.util.concurrent.BlockingQueue; >>>>> > >>>>> > import com.conversantmedia.util.concurrent.DisruptorBlockingQueue; >>>>> > +import org.apache.logging.log4j.core.config.Node; >>>>> > +import org.apache.logging.log4j.core.config.plugins.Plugin; >>>>> > +import org.apache.logging.log4j.core.config.plugins.PluginFactory; >>>>> > >>>>> > /** >>>>> > * Factory for creating instances of {@link DisruptorBlockingQueue}. >>>>> > * >>>>> > * @since 2.7 >>>>> > */ >>>>> > +@Plugin(name = "DisruptorBlockingQueue", category = Node.CATEGORY, >>>>> elementType = BlockingQueueFactory.ELEMENT_TYPE) >>>>> > public class DisruptorBlockingQueueFactory<E> implements >>>>> BlockingQueueFactory<E> { >>>>> > @Override >>>>> > public BlockingQueue<E> create(int capacity) { >>>>> > - return new DisruptorBlockingQueue<E>(capacity); >>>>> > + return new DisruptorBlockingQueue<>(capacity); >>>>> > + } >>>>> > + >>>>> > + @PluginFactory >>>>> > + public static <E> DisruptorBlockingQueueFactory<E> >>>>> createFactory() { >>>>> > + return new DisruptorBlockingQueueFactory<>(); >>>>> > } >>>>> > } >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/co >>>>> re/async/LinkedTransferQueueFactory.java >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/main/java/org >>>>> /apache/logging/log4j/core/async/LinkedTransferQueueFactory.java >>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/LinkedTransferQueueFactory.java >>>>> > index 862fab3..6ab24e7 100644 >>>>> > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/LinkedTransferQueueFactory.java >>>>> > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/asy >>>>> nc/LinkedTransferQueueFactory.java >>>>> > @@ -20,14 +20,24 @@ package org.apache.logging.log4j.core.async; >>>>> > import java.util.concurrent.BlockingQueue; >>>>> > import java.util.concurrent.LinkedTransferQueue; >>>>> > >>>>> > +import org.apache.logging.log4j.core.config.Node; >>>>> > +import org.apache.logging.log4j.core.config.plugins.Plugin; >>>>> > +import org.apache.logging.log4j.core.config.plugins.PluginFactory; >>>>> > + >>>>> > /** >>>>> > * Factory for creating instances of {@link LinkedTransferQueue}. >>>>> > * >>>>> > * @since 2.7 >>>>> > */ >>>>> > +@Plugin(name = "LinkedTransferQueue", category = Node.CATEGORY, >>>>> elementType = BlockingQueueFactory.ELEMENT_TYPE) >>>>> > public class LinkedTransferQueueFactory<E> implements >>>>> BlockingQueueFactory<E> { >>>>> > @Override >>>>> > public BlockingQueue<E> create(int capacity) { >>>>> > return new LinkedTransferQueue<>(); >>>>> > } >>>>> > + >>>>> > + @PluginFactory >>>>> > + public static <E> LinkedTransferQueueFactory<E> createFactory() >>>>> { >>>>> > + return new LinkedTransferQueueFactory<>(); >>>>> > + } >>>>> > } >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/test/java/org/apache/logging/log4j/co >>>>> re/appender/AsyncAppenderTest.java >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/test/java/org >>>>> /apache/logging/log4j/core/appender/AsyncAppenderTest.java >>>>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/app >>>>> ender/AsyncAppenderTest.java >>>>> > index 3066f38..076fdd0 100644 >>>>> > --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/app >>>>> ender/AsyncAppenderTest.java >>>>> > +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/app >>>>> ender/AsyncAppenderTest.java >>>>> > @@ -41,19 +41,21 @@ import static org.junit.Assert.*; >>>>> > */ >>>>> > @RunWith(Parameterized.class) >>>>> > public class AsyncAppenderTest { >>>>> > - private static final String CONFIG = "log4j-asynch.xml"; >>>>> > >>>>> > @Parameterized.Parameters >>>>> > public static Object[] data() { >>>>> > - return new Class<?>[]{ >>>>> > - ArrayBlockingQueueFactory.class, >>>>> > - DisruptorBlockingQueueFactory.class, >>>>> > - LinkedTransferQueueFactory.class >>>>> > + return new String[]{ >>>>> > + // default async config uses array blocking queue >>>>> > + "log4j-asynch.xml", >>>>> > + // override default blocking queue implementations >>>>> > + "BlockingQueueFactory-ArrayBlockingQueue.xml", >>>>> > + "BlockingQueueFactory-DisruptorBlockingQueue.xml", >>>>> > + "BlockingQueueFactory-LinkedTransferQueue.xml" >>>>> > }; >>>>> > } >>>>> > >>>>> > - public AsyncAppenderTest(final Class<? extends >>>>> BlockingQueueFactory> factory) { >>>>> > - context = new LoggerContextRule(CONFIG).with >>>>> SystemProperty(BlockingQueueFactory.PROPERTY, factory.getName()); >>>>> > + public AsyncAppenderTest(final String configFileName) { >>>>> > + context = new LoggerContextRule(configFileName); >>>>> > } >>>>> > >>>>> > @Rule >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-A >>>>> rrayBlockingQueue.xml >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/test/resource >>>>> s/BlockingQueueFactory-ArrayBlockingQueue.xml >>>>> b/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBl >>>>> ockingQueue.xml >>>>> > new file mode 100644 >>>>> > index 0000000..e8bbfa6 >>>>> > --- /dev/null >>>>> > +++ b/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBl >>>>> ockingQueue.xml >>>>> > @@ -0,0 +1,40 @@ >>>>> > +<?xml version="1.0" encoding="UTF-8"?> >>>>> > +<!-- >>>>> > + Licensed to the Apache Software Foundation (ASF) under one or more >>>>> > + contributor license agreements. See the NOTICE file distributed >>>>> with >>>>> > + this work for additional information regarding copyright ownership. >>>>> > + The ASF licenses this file to You under the Apache License, >>>>> Version 2.0 >>>>> > + (the "License"); you may not use this file except in compliance >>>>> with >>>>> > + the License. You may obtain a copy of the License at >>>>> > + >>>>> > + http://www.apache.org/licenses/LICENSE-2.0 >>>>> > + >>>>> > + Unless required by applicable law or agreed to in writing, software >>>>> > + distributed under the License is distributed on an "AS IS" BASIS, >>>>> > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>>> implied. >>>>> > + See the License for the specific language governing permissions and >>>>> > + limitations under the License. >>>>> > + >>>>> > +--> >>>>> > +<Configuration status="OFF" name="ArrayBlockingQueueFactory"> >>>>> > + >>>>> > + <Appenders> >>>>> > + <Console name="STDOUT"> >>>>> > + <PatternLayout pattern="%m%n"/> >>>>> > + </Console> >>>>> > + <List name="List"> >>>>> > + <PatternLayout pattern="%C %M %m"/> >>>>> > + </List> >>>>> > + <Async name="Async" includeLocation="true" error-ref="STDOUT"> >>>>> > + <AppenderRef ref="List"/> >>>>> > + <ArrayBlockingQueue/> >>>>> > + </Async> >>>>> > + </Appenders> >>>>> > + >>>>> > + <Loggers> >>>>> > + <Root level="debug"> >>>>> > + <AppenderRef ref="Async"/> >>>>> > + </Root> >>>>> > + </Loggers> >>>>> > + >>>>> > +</Configuration> >>>>> > \ No newline at end of file >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-D >>>>> isruptorBlockingQueue.xml >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/test/resource >>>>> s/BlockingQueueFactory-DisruptorBlockingQueue.xml >>>>> b/log4j-core/src/test/resources/BlockingQueueFactory-Disrupt >>>>> orBlockingQueue.xml >>>>> > new file mode 100644 >>>>> > index 0000000..268cca7 >>>>> > --- /dev/null >>>>> > +++ b/log4j-core/src/test/resources/BlockingQueueFactory-Disrupt >>>>> orBlockingQueue.xml >>>>> > @@ -0,0 +1,40 @@ >>>>> > +<?xml version="1.0" encoding="UTF-8"?> >>>>> > +<!-- >>>>> > + Licensed to the Apache Software Foundation (ASF) under one or more >>>>> > + contributor license agreements. See the NOTICE file distributed >>>>> with >>>>> > + this work for additional information regarding copyright ownership. >>>>> > + The ASF licenses this file to You under the Apache License, >>>>> Version 2.0 >>>>> > + (the "License"); you may not use this file except in compliance >>>>> with >>>>> > + the License. You may obtain a copy of the License at >>>>> > + >>>>> > + http://www.apache.org/licenses/LICENSE-2.0 >>>>> > + >>>>> > + Unless required by applicable law or agreed to in writing, software >>>>> > + distributed under the License is distributed on an "AS IS" BASIS, >>>>> > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>>> implied. >>>>> > + See the License for the specific language governing permissions and >>>>> > + limitations under the License. >>>>> > + >>>>> > +--> >>>>> > +<Configuration status="OFF" name="DisruptorBlockingQueueFactory"> >>>>> > + >>>>> > + <Appenders> >>>>> > + <Console name="STDOUT"> >>>>> > + <PatternLayout pattern="%m%n"/> >>>>> > + </Console> >>>>> > + <List name="List"> >>>>> > + <PatternLayout pattern="%C %M %m"/> >>>>> > + </List> >>>>> > + <Async name="Async" includeLocation="true" error-ref="STDOUT"> >>>>> > + <AppenderRef ref="List"/> >>>>> > + <DisruptorBlockingQueue/> >>>>> > + </Async> >>>>> > + </Appenders> >>>>> > + >>>>> > + <Loggers> >>>>> > + <Root level="debug"> >>>>> > + <AppenderRef ref="Async"/> >>>>> > + </Root> >>>>> > + </Loggers> >>>>> > + >>>>> > +</Configuration> >>>>> > \ No newline at end of file >>>>> > >>>>> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/6 >>>>> 5ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-L >>>>> inkedTransferQueue.xml >>>>> > ------------------------------------------------------------ >>>>> ---------- >>>>> > diff --git a/log4j-core/src/test/resource >>>>> s/BlockingQueueFactory-LinkedTransferQueue.xml >>>>> b/log4j-core/src/test/resources/BlockingQueueFactory-LinkedT >>>>> ransferQueue.xml >>>>> > new file mode 100644 >>>>> > index 0000000..13063d3 >>>>> > --- /dev/null >>>>> > +++ b/log4j-core/src/test/resources/BlockingQueueFactory-LinkedT >>>>> ransferQueue.xml >>>>> > @@ -0,0 +1,40 @@ >>>>> > +<?xml version="1.0" encoding="UTF-8"?> >>>>> > +<!-- >>>>> > + Licensed to the Apache Software Foundation (ASF) under one or more >>>>> > + contributor license agreements. See the NOTICE file distributed >>>>> with >>>>> > + this work for additional information regarding copyright ownership. >>>>> > + The ASF licenses this file to You under the Apache License, >>>>> Version 2.0 >>>>> > + (the "License"); you may not use this file except in compliance >>>>> with >>>>> > + the License. You may obtain a copy of the License at >>>>> > + >>>>> > + http://www.apache.org/licenses/LICENSE-2.0 >>>>> > + >>>>> > + Unless required by applicable law or agreed to in writing, software >>>>> > + distributed under the License is distributed on an "AS IS" BASIS, >>>>> > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>>> implied. >>>>> > + See the License for the specific language governing permissions and >>>>> > + limitations under the License. >>>>> > + >>>>> > +--> >>>>> > +<Configuration status="OFF" name="LinkedTransferQueueFactory"> >>>>> > + >>>>> > + <Appenders> >>>>> > + <Console name="STDOUT"> >>>>> > + <PatternLayout pattern="%m%n"/> >>>>> > + </Console> >>>>> > + <List name="List"> >>>>> > + <PatternLayout pattern="%C %M %m"/> >>>>> > + </List> >>>>> > + <Async name="Async" includeLocation="true" error-ref="STDOUT"> >>>>> > + <AppenderRef ref="List"/> >>>>> > + <LinkedTransferQueue/> >>>>> > + </Async> >>>>> > + </Appenders> >>>>> > + >>>>> > + <Loggers> >>>>> > + <Root level="debug"> >>>>> > + <AppenderRef ref="Async"/> >>>>> > + </Root> >>>>> > + </Loggers> >>>>> > + >>>>> > +</Configuration> >>>>> > \ No newline at end of file >>>>> > >>>>> > >>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org >>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org >>>>> >>>>> >>>> >>>> >>>> -- >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>> Java Persistence with Hibernate, Second Edition >>>> <http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>>> >>>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> Java Persistence with Hibernate, Second Edition >>> <http://www.manning.com/bauer3/> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>> Spring Batch in Action <http://www.manning.com/templier/> >>> Blog: http://garygregory.wordpress.com >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >>> >>> >>> >> >> >> -- >> Matt Sicker <boa...@gmail.com> >> > > > > -- > Matt Sicker <boa...@gmail.com> >