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 > <mailto: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 >> <mailto: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 >> <mailto: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 >> > <mailto: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 >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo> >> > Commit: >> > http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/65ec9bce >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/65ec9bce> >> > Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/65ec9bce >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/65ec9bce> >> > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/65ec9bce >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/65ec9bce> >> > >> > Branch: refs/heads/master >> > Commit: 65ec9bcef74dc30ecab9c2091c6e0638d53490d8 >> > Parents: 0848d7a >> > Author: Matt Sicker <boa...@gmail.com <mailto:boa...@gmail.com>> >> > Authored: Fri Jun 17 18:51:08 2016 -0500 >> > Committer: Matt Sicker <boa...@gmail.com <mailto: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/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AsyncAppender.java >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/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 3c9c37c..dee5e50 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 >> > @@ -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.ArrayBlockingQueueFactory; >> > import org.apache.logging.log4j.core.async.AsyncQueueFullPolicy; >> > import org.apache.logging.log4j.core.async.AsyncQueueFullPolicyFactory; >> > +import org.apache.logging.log4j.core.async.BlockingQueueFactory; >> > +import org.apache.logging.log4j.core.async.BlockingQueueFactoryUtil; >> > import org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy; >> > 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.constraints.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.<LogEvent>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/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ArrayBlockingQueueFactory.java >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/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/async/ArrayBlockingQueueFactory.java >> > index e9c99b8..dcad78a 100644 >> > --- >> > 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/async/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/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/async/BlockingQueueFactory.java >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/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/async/BlockingQueueFactory.java >> > index ccd1625..5763d1e 100644 >> > --- >> > 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/async/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/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorBlockingQueueFactory.java >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/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/async/DisruptorBlockingQueueFactory.java >> > index 8fb3707..add375d 100644 >> > --- >> > 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/async/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/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/async/LinkedTransferQueueFactory.java >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/main/java/org/apache/logging/log4j/core/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/async/LinkedTransferQueueFactory.java >> > index 862fab3..6ab24e7 100644 >> > --- >> > 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/async/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/65ec9bce/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/test/java/org/apache/logging/log4j/core/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/appender/AsyncAppenderTest.java >> > index 3066f38..076fdd0 100644 >> > --- >> > 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/appender/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).withSystemProperty(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/65ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBlockingQueue.xml >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBlockingQueue.xml> >> > ---------------------------------------------------------------------- >> > diff --git >> > a/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBlockingQueue.xml >> > >> > b/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBlockingQueue.xml >> > new file mode 100644 >> > index 0000000..e8bbfa6 >> > --- /dev/null >> > +++ >> > b/log4j-core/src/test/resources/BlockingQueueFactory-ArrayBlockingQueue.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 >> > <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/65ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-DisruptorBlockingQueue.xml >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-DisruptorBlockingQueue.xml> >> > ---------------------------------------------------------------------- >> > diff --git >> > a/log4j-core/src/test/resources/BlockingQueueFactory-DisruptorBlockingQueue.xml >> > >> > b/log4j-core/src/test/resources/BlockingQueueFactory-DisruptorBlockingQueue.xml >> > new file mode 100644 >> > index 0000000..268cca7 >> > --- /dev/null >> > +++ >> > b/log4j-core/src/test/resources/BlockingQueueFactory-DisruptorBlockingQueue.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 >> > <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/65ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-LinkedTransferQueue.xml >> > >> > <http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/65ec9bce/log4j-core/src/test/resources/BlockingQueueFactory-LinkedTransferQueue.xml> >> > ---------------------------------------------------------------------- >> > diff --git >> > a/log4j-core/src/test/resources/BlockingQueueFactory-LinkedTransferQueue.xml >> > >> > b/log4j-core/src/test/resources/BlockingQueueFactory-LinkedTransferQueue.xml >> > new file mode 100644 >> > index 0000000..13063d3 >> > --- /dev/null >> > +++ >> > b/log4j-core/src/test/resources/BlockingQueueFactory-LinkedTransferQueue.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 >> > <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 >> <mailto:log4j-dev-unsubscr...@logging.apache.org> >> For additional commands, e-mail: log4j-dev-h...@logging.apache.org >> <mailto:log4j-dev-h...@logging.apache.org> >> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | >> ggreg...@apache.org <mailto: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 <http://garygregory.wordpress.com/> >> Home: http://garygregory.com/ <http://garygregory.com/> >> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory> > > > > -- > E-Mail: garydgreg...@gmail.com <mailto:garydgreg...@gmail.com> | > ggreg...@apache.org <mailto: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 <http://garygregory.wordpress.com/> > Home: http://garygregory.com/ <http://garygregory.com/> > Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>