Hm, that failure appears to be random...

Gary

On Mon, Sep 5, 2016 at 5: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.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.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/asy
>> nc/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/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/asy
>> nc/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/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/asy
>> nc/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/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/resources/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/resources/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/resources/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

Reply via email to