You need to review http://logging.apache.org/log4j/2.x/javastyle.html <http://logging.apache.org/log4j/2.x/javastyle.html>. In particular you reordered the imports when they were correct to start with and you changed specific imports to a wildcard import.
Ralph > On Apr 27, 2016, at 10:04 AM, [email protected] wrote: > > Repository: logging-log4j2 > Updated Branches: > refs/heads/LOG4J2-1347 [created] 1b134cf3c > > > LogEvent memento > > > Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo > Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/1b134cf3 > Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/1b134cf3 > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/1b134cf3 > > Branch: refs/heads/LOG4J2-1347 > Commit: 1b134cf3cbd227562fdfa8c4744366e09a03d4c2 > Parents: 7c36904 > Author: Mikael Ståldal <[email protected]> > Authored: Wed Apr 27 19:04:01 2016 +0200 > Committer: Mikael Ståldal <[email protected]> > Committed: Wed Apr 27 19:04:01 2016 +0200 > > ---------------------------------------------------------------------- > .../log4j/core/appender/AsyncAppender.java | 62 +++++++++----------- > .../logging/log4j/core/impl/Log4jLogEvent.java | 10 ++++ > .../log4j/core/impl/MutableLogEvent.java | 11 ++++ > .../core/layout/AbstractJacksonLayout.java | 2 +- > .../logging/log4j/core/net/SmtpManager.java | 2 +- > .../log4j/test/appender/ListAppender.java | 2 +- > 6 files changed, 52 insertions(+), 37 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1b134cf3/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 aa10155..72f9ca8 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 > @@ -16,14 +16,7 @@ > */ > package org.apache.logging.log4j.core.appender; > > -import java.io.Serializable; > -import java.util.ArrayList; > -import java.util.List; > -import java.util.Map; > -import java.util.concurrent.ArrayBlockingQueue; > -import java.util.concurrent.BlockingQueue; > -import java.util.concurrent.atomic.AtomicLong; > - > +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; > @@ -35,15 +28,17 @@ import > org.apache.logging.log4j.core.config.AppenderControl; > import org.apache.logging.log4j.core.config.AppenderRef; > import org.apache.logging.log4j.core.config.Configuration; > import org.apache.logging.log4j.core.config.ConfigurationException; > -import org.apache.logging.log4j.core.config.plugins.Plugin; > -import org.apache.logging.log4j.core.config.plugins.PluginAliases; > -import org.apache.logging.log4j.core.config.plugins.PluginAttribute; > -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.PluginFactory; > +import org.apache.logging.log4j.core.config.plugins.*; > import org.apache.logging.log4j.core.impl.Log4jLogEvent; > import org.apache.logging.log4j.core.util.Constants; > > +import java.util.ArrayList; > +import java.util.List; > +import java.util.Map; > +import java.util.concurrent.ArrayBlockingQueue; > +import java.util.concurrent.BlockingQueue; > +import java.util.concurrent.atomic.AtomicLong; > + > /** > * Appends to one or more Appenders asynchronously. You can configure an > AsyncAppender with one or more Appenders and an > * Appender to append to if the queue is full. The AsyncAppender does not > allow a filter to be specified on the Appender > @@ -53,11 +48,11 @@ import org.apache.logging.log4j.core.util.Constants; > public final class AsyncAppender extends AbstractAppender { > > private static final int DEFAULT_QUEUE_SIZE = 128; > - private static final String SHUTDOWN = "Shutdown"; > + private static final LogEvent SHUTDOWN = new AbstractLogEvent() { }; > > private static final AtomicLong THREAD_SEQUENCE = new AtomicLong(1); > > - private final BlockingQueue<Serializable> queue; > + private final BlockingQueue<LogEvent> queue; > private final int queueSize; > private final boolean blocking; > private final long shutdownTimeout; > @@ -173,19 +168,19 @@ public final class AsyncAppender extends > AbstractAppender { > > private boolean enqueueOrBlockIfQueueFull(final LogEvent logEvent) { > boolean appendSuccessful; > - final Serializable serialized = Log4jLogEvent.serialize(logEvent, > includeLocation); > + final Log4jLogEvent frozenLogEvent = > Log4jLogEvent.createMemento(logEvent, includeLocation); > try { > // wait for free slots in the queue > - queue.put(serialized); > + queue.put(frozenLogEvent); > appendSuccessful = true; > } catch (final InterruptedException e) { > - appendSuccessful = handleInterruptedException(serialized); > + appendSuccessful = handleInterruptedException(frozenLogEvent); > } > return appendSuccessful; > } > > private boolean enqueueOrDropIfQueueFull(final LogEvent logEvent) { > - final boolean appendSuccessful = > queue.offer(Log4jLogEvent.serialize(logEvent, includeLocation)); > + final boolean appendSuccessful = > queue.offer(Log4jLogEvent.createMemento(logEvent, includeLocation)); > if (!appendSuccessful) { > error("Appender " + getName() + " is unable to write primary > appenders. queue is full"); > } > @@ -203,8 +198,8 @@ public final class AsyncAppender extends AbstractAppender > { > // This may interfere with the application's expectation of > // being interrupted, so when we are done, we set the interrupted > // flag again. > - private boolean handleInterruptedException(final Serializable > serialized) { > - final boolean appendSuccessful = queue.offer(serialized); > + private boolean handleInterruptedException(final Log4jLogEvent > frozenLogEvent) { > + final boolean appendSuccessful = queue.offer(frozenLogEvent); > if (!appendSuccessful) { > LOGGER.warn("Interrupted while waiting for a free slot in the > AsyncAppender LogEvent-queue {}", > getName()); > @@ -269,9 +264,9 @@ public final class AsyncAppender extends AbstractAppender > { > > private volatile boolean shutdown = false; > private final List<AppenderControl> appenders; > - private final BlockingQueue<Serializable> queue; > + private final BlockingQueue<LogEvent> queue; > > - public AsyncThread(final List<AppenderControl> appenders, final > BlockingQueue<Serializable> queue) { > + public AsyncThread(final List<AppenderControl> appenders, final > BlockingQueue<LogEvent> queue) { > this.appenders = appenders; > this.queue = queue; > setDaemon(true); > @@ -281,17 +276,16 @@ public final class AsyncAppender extends > AbstractAppender { > @Override > public void run() { > while (!shutdown) { > - Serializable s; > + LogEvent event; > try { > - s = queue.take(); > - if (s != null && s instanceof String && > SHUTDOWN.equals(s.toString())) { > + event = queue.take(); > + if (event == SHUTDOWN) { > shutdown = true; > continue; > } > } catch (final InterruptedException ex) { > break; // LOG4J2-830 > } > - final Log4jLogEvent event = Log4jLogEvent.deserialize(s); > event.setEndOfBatch(queue.isEmpty()); > final boolean success = callAppenders(event); > if (!success && errorAppender != null) { > @@ -309,15 +303,15 @@ public final class AsyncAppender extends > AbstractAppender { > int ignored = 0; > while (!queue.isEmpty()) { > try { > - final Serializable s = queue.take(); > - if (Log4jLogEvent.canDeserialize(s)) { > - final Log4jLogEvent event = > Log4jLogEvent.deserialize(s); > - event.setEndOfBatch(queue.isEmpty()); > - callAppenders(event); > + final LogEvent event = queue.take(); > + if (event instanceof Log4jLogEvent) { > + final Log4jLogEvent logEvent = (Log4jLogEvent) event; > + logEvent.setEndOfBatch(queue.isEmpty()); > + callAppenders(logEvent); > count++; > } else { > ignored++; > - LOGGER.trace("Ignoring event of class {}", > s.getClass().getName()); > + LOGGER.trace("Ignoring event of class {}", > event.getClass().getName()); > } > } catch (final InterruptedException ex) { > // May have been interrupted to shut down. > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1b134cf3/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java > ---------------------------------------------------------------------- > diff --git > a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java > index 776fba7..7c9bcbf 100644 > --- > a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java > +++ > b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java > @@ -670,6 +670,16 @@ public Log4jLogEvent(final String loggerName, final > Marker marker, final String > throw new InvalidObjectException("Proxy required"); > } > > + /** > + * Creates and returns a new immutable copy of this {@code > Log4jLogEvent}. > + * > + * @return a new immutable copy of the data in this {@code Log4jLogEvent} > + */ > + public static Log4jLogEvent createMemento(LogEvent event, final boolean > includeLocation) { > + // TODO implement Log4jLogEvent.createMemento() > + return deserialize(serialize(event, includeLocation)); > + } > + > @Override > public String toString() { > final StringBuilder sb = new StringBuilder(); > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1b134cf3/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java > ---------------------------------------------------------------------- > diff --git > a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java > index 7fd31c0..be4ba24 100644 > --- > a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java > +++ > b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java > @@ -415,4 +415,15 @@ public class MutableLogEvent implements LogEvent, > ReusableMessage { > private void readObject(final ObjectInputStream stream) throws > InvalidObjectException { > throw new InvalidObjectException("Proxy required"); > } > + > + /** > + * Creates and returns a new immutable copy of this {@code > MutableLogEvent}. > + * > + * @return a new immutable copy of the data in this {@code > MutableLogEvent} > + */ > + public Log4jLogEvent createMemento() { > + // TODO implement MutableLogEvent.createMemento() > + return Log4jLogEvent.deserialize(Log4jLogEvent.serialize(this, > includeLocation)); > + } > + > } > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1b134cf3/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java > ---------------------------------------------------------------------- > diff --git > a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java > > b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java > index 22e2d36..b3bad36 100644 > --- > a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java > +++ > b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java > @@ -75,7 +75,7 @@ abstract class AbstractJacksonLayout extends > AbstractStringLayout { > // TODO Need to set up the same filters for MutableLogEvent but don't > know how... > // This is a workaround. > return event instanceof MutableLogEvent > - ? Log4jLogEvent.deserialize(Log4jLogEvent.serialize(event, > event.isIncludeLocation())) > + ? ((MutableLogEvent) event).createMemento() > : event; > } > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1b134cf3/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java > ---------------------------------------------------------------------- > diff --git > a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java > b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java > index ab1d5c7..6683f1d 100644 > --- > a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java > +++ > b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java > @@ -88,7 +88,7 @@ public class SmtpManager extends AbstractManager { > if (event instanceof Log4jLogEvent && event.getMessage() instanceof > ReusableMessage) { > ((Log4jLogEvent) event).makeMessageImmutable(); > } else if (event instanceof MutableLogEvent) { > - event = Log4jLogEvent.deserialize(Log4jLogEvent.serialize(event, > event.isIncludeLocation())); > + event = ((MutableLogEvent) event).createMemento(); > } > buffer.add(event); > } > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1b134cf3/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java > ---------------------------------------------------------------------- > diff --git > a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java > > b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java > index acab7c1..cc897ea 100644 > --- > a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java > +++ > b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java > @@ -88,7 +88,7 @@ public class ListAppender extends AbstractAppender { > if (layout == null) { > if (event instanceof MutableLogEvent) { > // must take snapshot or subsequent calls to logger.log() > will modify this event > - > events.add(Log4jLogEvent.deserialize(Log4jLogEvent.serialize(event, > event.isIncludeLocation()))); > + events.add(((MutableLogEvent) event).createMemento()); > } else { > events.add(event); > } > >
