logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: [13/36] logging-log4j2 git commit: Convert BlockingQueueFactory into a plugin element
Date Mon, 05 Sep 2016 21:18:53 GMT
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.goers@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, mattsicker@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/
> 65ec9bce
> > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/
> 65ec9bce
> >
> > Branch: refs/heads/master
> > Commit: 65ec9bcef74dc30ecab9c2091c6e0638d53490d8
> > Parents: 0848d7a
> > Author: Matt Sicker <boards@gmail.com>
> > Authored: Fri Jun 17 18:51:08 2016 -0500
> > Committer: Matt Sicker <boards@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
> > ----------------------------------------------------------------------
> > 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
> > ----------------------------------------------------------------------
> > 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
> > ----------------------------------------------------------------------
> > 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
> > ----------------------------------------------------------------------
> > 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
> > ----------------------------------------------------------------------
> > 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
> > ----------------------------------------------------------------------
> > 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
> > ----------------------------------------------------------------------
> > 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
> > +
> > + 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
> > ----------------------------------------------------------------------
> > 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
> > +
> > + 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
> > ----------------------------------------------------------------------
> > 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
> > +
> > + 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-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-dev-help@logging.apache.org
>
>


-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Mime
View raw message