Repository: logging-log4j2
Updated Branches:
  refs/heads/master ab12dfb96 -> 770312cb3


[LOG4J2-2493] Remove deprecated code. Still a bit more to do.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/770312cb
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/770312cb
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/770312cb

Branch: refs/heads/master
Commit: 770312cb3a7bfdd11adfca79acc000eab5b397c8
Parents: ab12dfb
Author: Gary Gregory <[email protected]>
Authored: Mon Oct 29 17:46:49 2018 -0600
Committer: Gary Gregory <[email protected]>
Committed: Mon Oct 29 17:46:49 2018 -0600

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/LogEvent.java |   3 +-
 .../log4j/core/layout/SerializedLayout.java     | 125 ------------
 .../log4j/core/layout/SerializedLayoutTest.java | 189 -------------------
 .../test/appender/EncodingListAppender.java     |  26 +--
 .../log4j/test/appender/ListAppender.java       |  33 ++--
 .../logging/log4j/jms/appender/JmsManager.java  |   4 -
 .../log4j/kafka/appender/KafkaAppender.java     |  34 ++--
 7 files changed, 36 insertions(+), 378 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
index e12ab63..5af80fa 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
@@ -30,8 +30,7 @@ import org.apache.logging.log4j.util.ReadOnlyStringMap;
 
 /**
  * Provides contextual information about a logged message. A LogEvent must be 
{@link java.io.Serializable} so that it
- * may be transmitted over a network connection, output in a
- * {@link org.apache.logging.log4j.core.layout.SerializedLayout}, and many 
other uses. Besides containing a
+ * may be transmitted over a network connection. Besides containing a
  * {@link org.apache.logging.log4j.message.Message}, a LogEvent has a 
corresponding
  * {@link org.apache.logging.log4j.Level} that the message was logged at. If a
  * {@link org.apache.logging.log4j.Marker} was used, then it is included here. 
The contents of the

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
deleted file mode 100644
index a77e819..0000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SerializedLayout.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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.
- */
-package org.apache.logging.log4j.core.layout;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-
-import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.LogEvent;
-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;
-
-/**
- * Formats a {@link LogEvent} in its Java serialized form.
- *
- * @deprecated Java Serialization has inherent security weaknesses, see 
https://www.owasp.org/index.php/Deserialization_of_untrusted_data .
- * Using this layout is no longer recommended. An alternative layout 
containing the same information is
- * {@link JsonLayout} when configured with properties="true". Deprecated since 
2.9.
- */
-@Deprecated
-@Plugin(name = "SerializedLayout", category = Node.CATEGORY, elementType = 
Layout.ELEMENT_TYPE, printObject = true)
-public final class SerializedLayout extends AbstractLayout<LogEvent> {
-
-    private static byte[] serializedHeader;
-
-    static {
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try {
-            new ObjectOutputStream(baos).close();
-            serializedHeader = baos.toByteArray();
-        } catch (final Exception ex) {
-            LOGGER.error("Unable to generate Object stream header", ex);
-        }
-    }
-
-    private SerializedLayout() {
-        super(null, null, null);
-        LOGGER.warn("SerializedLayout is deprecated due to the inherent 
security weakness in Java Serialization, see 
https://www.owasp.org/index.php/Deserialization_of_untrusted_data Consider 
using another layout, e.g. JsonLayout");
-    }
-
-    /**
-     * Formats a {@link org.apache.logging.log4j.core.LogEvent} as a 
serialized byte array of the LogEvent object.
-     *
-     * @param event The LogEvent.
-     * @return the formatted LogEvent.
-     */
-    @Override
-    public byte[] toByteArray(final LogEvent event) {
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try (final ObjectOutputStream oos = new 
PrivateObjectOutputStream(baos)) {
-            oos.writeObject(event);
-            oos.reset();
-        } catch (final IOException ioe) {
-            LOGGER.error("Serialization of LogEvent failed.", ioe);
-        }
-        return baos.toByteArray();
-    }
-
-    /**
-     * Returns the LogEvent.
-     *
-     * @param event The Logging Event.
-     * @return The LogEvent.
-     */
-    @Override
-    public LogEvent toSerializable(final LogEvent event) {
-        return event;
-    }
-
-    /**
-     * Creates a SerializedLayout.
-     * @return A SerializedLayout.
-     */
-    @Deprecated
-    @PluginFactory
-    public static SerializedLayout createLayout() {
-        return new SerializedLayout();
-    }
-
-    @Override
-    public byte[] getHeader() {
-        return serializedHeader;
-    }
-
-    /**
-     * SerializedLayout returns a binary stream.
-     * @return The content type.
-     */
-    @Override
-    public String getContentType() {
-        return "application/octet-stream";
-    }
-
-    /**
-     * The stream header will be written in the Manager so skip it here.
-     */
-    private class PrivateObjectOutputStream extends ObjectOutputStream {
-
-        public PrivateObjectOutputStream(final OutputStream os) throws 
IOException {
-            super(os);
-        }
-
-        @Override
-        protected void writeStreamHeader() {
-            // do nothing
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializedLayoutTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializedLayoutTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializedLayoutTest.java
deleted file mode 100644
index c01c82e..0000000
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/SerializedLayoutTest.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 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.
- */
-package org.apache.logging.log4j.core.layout;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LoggingException;
-import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.BasicConfigurationFactory;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.junit.ThreadContextRule;
-import org.apache.logging.log4j.message.SimpleMessage;
-import org.apache.logging.log4j.test.appender.ListAppender;
-import org.apache.logging.log4j.util.FilteredObjectInputStream;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- *
- */
-public class SerializedLayoutTest {
-    private static final String DAT_PATH = 
"target/test-classes/serializedEvent.dat";
-    LoggerContext ctx = LoggerContext.getContext();
-    Logger root = ctx.getRootLogger();
-
-    static ConfigurationFactory cf = new BasicConfigurationFactory();
-
-    static boolean useObjectInputStream = false;
-
-    @Rule
-    public final ThreadContextRule threadContextRule = new 
ThreadContextRule(); 
-
-    @BeforeClass
-    public static void setupClass() {
-        try {
-            Class.forName("java.io.ObjectInputFilter");
-            useObjectInputStream = true;
-        } catch (ClassNotFoundException ex) {
-            // Ignore the exception
-        }
-        ConfigurationFactory.setConfigurationFactory(cf);
-        final LoggerContext ctx = LoggerContext.getContext();
-        ctx.reconfigure();
-    }
-
-    @AfterClass
-    public static void cleanupClass() {
-        ConfigurationFactory.removeConfigurationFactory(cf);
-    }
-
-    private static final String body =
-        "<log4j:message><![CDATA[empty mdc]]></log4j:message>\r";
-
-    private static final String[] expected = {
-        "Logger=root Level=DEBUG Message=starting mdc pattern test",
-        "Logger=root Level=DEBUG Message=empty mdc",
-        "Logger=root Level=DEBUG Message=filled mdc",
-        "Logger=root Level=ERROR Message=finished mdc pattern test",
-        "Logger=root Level=ERROR Message=Throwing an exception"
-    };
-
-
-    /**
-     * Test case for MDC conversion pattern.
-     */
-    @Test
-    public void testLayout() throws Exception {
-        final Map<String, Appender> appenders = root.getAppenders();
-        for (final Appender appender : appenders.values()) {
-            root.removeAppender(appender);
-        }
-        // set up appender
-        final SerializedLayout layout = SerializedLayout.createLayout();
-        final ListAppender appender = new ListAppender("List", null, layout, 
false, true);
-        appender.start();
-
-        // set appender on root and set level to debug
-        root.addAppender(appender);
-        root.setLevel(Level.DEBUG);
-
-        // output starting message
-        root.debug("starting mdc pattern test");
-
-        root.debug("empty mdc");
-
-        ThreadContext.put("key1", "value1");
-        ThreadContext.put("key2", "value2");
-
-        root.debug("filled mdc");
-
-        ThreadContext.remove("key1");
-        ThreadContext.remove("key2");
-
-        root.error("finished mdc pattern test", new 
NullPointerException("test"));
-
-        final Exception parent = new IllegalStateException("Test");
-        final Throwable child = new LoggingException("This is a test", parent);
-
-        root.error("Throwing an exception", child);
-
-        appender.stop();
-
-        final List<byte[]> data = appender.getData();
-        assertTrue(data.size() > 0);
-        int i = 0;
-        for (final byte[] item : data) {
-            final ByteArrayInputStream bais = new ByteArrayInputStream(item);
-            final ObjectInputStream ois = useObjectInputStream ? new 
ObjectInputStream(bais) :
-                    new FilteredObjectInputStream(bais);
-            LogEvent event;
-            try {
-                event = (LogEvent) ois.readObject();
-            } catch (final IOException ioe) {
-                System.err.println("Exception processing item " + i);
-                throw ioe;
-            }
-            assertTrue("Incorrect event", 
event.toString().equals(expected[i]));
-            ++i;
-        }
-        for (final Appender app : appenders.values()) {
-            root.addAppender(app);
-        }
-    }
-
-    @Test
-    public void testSerialization() throws Exception {
-        final SerializedLayout layout = SerializedLayout.createLayout();
-        final Throwable throwable = new LoggingException("Test");
-        final LogEvent event = Log4jLogEvent.newBuilder() //
-                .setLoggerName(this.getClass().getName()) //
-                .setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
-                .setLevel(Level.INFO) //
-                .setMessage(new SimpleMessage("Hello, world!")) //
-                .setThrown(throwable) //
-                .build();
-        final byte[] result = layout.toByteArray(event);
-        assertNotNull(result);
-        final FileOutputStream fos = new FileOutputStream(DAT_PATH);
-        fos.write(layout.getHeader());
-        fos.write(result);
-        fos.close();
-    }
-
-    @Test
-    public void testDeserialization() throws Exception {
-        testSerialization();
-        final File file = new File(DAT_PATH);
-        final FileInputStream fis = new FileInputStream(file);
-        final ObjectInputStream ois = useObjectInputStream ? new 
ObjectInputStream(fis) :
-                new FilteredObjectInputStream(fis);
-        try {
-            final LogEvent event = (LogEvent) ois.readObject();
-            assertNotNull(event);
-        } finally {
-            ois.close();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/EncodingListAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/EncodingListAppender.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/EncodingListAppender.java
index 4d7ee56..f0da1d6 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/EncodingListAppender.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/EncodingListAppender.java
@@ -16,20 +16,20 @@
  */
 package org.apache.logging.log4j.test.appender;
 
+import java.io.Serializable;
+import java.nio.ByteBuffer;
+
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.layout.ByteBufferDestination;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
-
-import java.io.Serializable;
-import java.nio.ByteBuffer;
 
 /**
- * This appender is primarily used for testing. Use in a real environment is 
discouraged as the
- * List could eventually grow to cause an OutOfMemoryError.
+ * This appender is primarily used for testing. Use in a real environment is 
discouraged as the List could eventually
+ * grow to cause an OutOfMemoryError.
  *
- * This appender will use {@link Layout#encode(Object, ByteBufferDestination)} 
(and not {@link Layout#toByteArray(LogEvent)}).
+ * This appender will use {@link Layout#encode(Object, ByteBufferDestination)} 
(and not
+ * {@link Layout#toByteArray(LogEvent)}).
  */
 public class EncodingListAppender extends ListAppender {
 
@@ -37,12 +37,14 @@ public class EncodingListAppender extends ListAppender {
         super(name);
     }
 
-    public EncodingListAppender(final String name, final Filter filter, final 
Layout<? extends Serializable> layout, final boolean newline, final boolean 
raw) {
+    public EncodingListAppender(final String name, final Filter filter, final 
Layout<? extends Serializable> layout,
+            final boolean newline, final boolean raw) {
         super(name, filter, layout, newline, raw);
     }
 
     private class Destination implements ByteBufferDestination {
         ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[4096]);
+
         @Override
         public ByteBuffer getByteBuffer() {
             return byteBuffer;
@@ -69,14 +71,6 @@ public class EncodingListAppender extends ListAppender {
         final Layout<? extends Serializable> layout = getLayout();
         if (layout == null) {
             events.add(event);
-        } else if (layout instanceof SerializedLayout) {
-            final Destination content = new Destination();
-            content.byteBuffer.put(layout.getHeader());
-            layout.encode(event, content);
-            content.getByteBuffer().flip();
-            final byte[] record = new 
byte[content.getByteBuffer().remaining()];
-            content.getByteBuffer().get(record);
-            data.add(record);
         } else {
             final Destination content = new Destination();
             layout.encode(event, content);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/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 c5ac234..1234f8a 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
@@ -36,11 +36,10 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
 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.MutableLogEvent;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
 
 /**
- * This appender is primarily used for testing. Use in a real environment is 
discouraged as the
- * List could eventually grow to cause an OutOfMemoryError.
+ * This appender is primarily used for testing. Use in a real environment is 
discouraged as the List could eventually
+ * grow to cause an OutOfMemoryError.
  *
  * This appender is not thread-safe.
  *
@@ -67,17 +66,18 @@ public class ListAppender extends AbstractAppender {
 
     /**
      * CountDownLatch for asynchronous logging tests. Example usage:
+     * 
      * <pre>
-     * @Rule
+     * &#64;Rule
      * public LoggerContextRule context = new 
LoggerContextRule("log4j-list.xml");
      * private ListAppender listAppender;
      *
-     * @Before
+     * &#64;Before
      * public void before() throws Exception {
      *     listAppender = context.getListAppender("List");
      * }
      *
-     * @Test
+     * &#64;Test
      * public void testSomething() throws Exception {
      *     listAppender.countDownLatch = new CountDownLatch(1);
      *
@@ -99,12 +99,12 @@ public class ListAppender extends AbstractAppender {
         raw = false;
     }
 
-    public ListAppender(final String name, final Filter filter, final Layout<? 
extends Serializable> layout, final boolean newline,
-                        final boolean raw) {
+    public ListAppender(final String name, final Filter filter, final Layout<? 
extends Serializable> layout,
+            final boolean newline, final boolean raw) {
         super(name, filter, layout);
         this.newLine = newline;
         this.raw = raw;
-        if (layout != null && !(layout instanceof SerializedLayout)) {
+        if (layout != null) {
             final byte[] bytes = layout.getHeader();
             if (bytes != null) {
                 write(bytes);
@@ -122,13 +122,6 @@ public class ListAppender extends AbstractAppender {
             } else {
                 events.add(event);
             }
-        } else if (layout instanceof SerializedLayout) {
-            final byte[] header = layout.getHeader();
-            final byte[] content = layout.toByteArray(event);
-            final byte[] record = new byte[header.length + content.length];
-            System.arraycopy(header, 0, record, 0, header.length);
-            System.arraycopy(content, 0, record, header.length, 
content.length);
-            data.add(record);
         } else {
             write(layout.toByteArray(event));
         }
@@ -208,7 +201,8 @@ public class ListAppender extends AbstractAppender {
      * Polls the messages list for it to grow to a given minimum size at most 
timeout timeUnits and return a copy of
      * what we have so far.
      */
-    public List<String> getMessages(final int minSize, final long timeout, 
final TimeUnit timeUnit) throws InterruptedException {
+    public List<String> getMessages(final int minSize, final long timeout, 
final TimeUnit timeUnit)
+            throws InterruptedException {
         final long endMillis = System.currentTimeMillis() + 
timeUnit.toMillis(timeout);
         while (messages.size() < minSize && System.currentTimeMillis() < 
endMillis) {
             Thread.sleep(100);
@@ -221,7 +215,7 @@ public class ListAppender extends AbstractAppender {
     }
 
     public static ListAppender createAppender(final String name, final boolean 
newLine, final boolean raw,
-                                              final Layout<? extends 
Serializable> layout, final Filter filter) {
+            final Layout<? extends Serializable> layout, final Filter filter) {
         return new ListAppender(name, filter, layout, newLine, raw);
     }
 
@@ -282,7 +276,8 @@ public class ListAppender extends AbstractAppender {
     /**
      * Gets the named ListAppender if it has been registered.
      *
-     * @param name the name of the ListAppender
+     * @param name
+     *            the name of the ListAppender
      * @return the named ListAppender or {@code null} if it does not exist
      * @see 
org.apache.logging.log4j.junit.LoggerContextRule#getListAppender(String)
      */

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java 
b/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
index b0f30cd..521bb09 100644
--- 
a/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
+++ 
b/log4j-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java
@@ -329,10 +329,6 @@ public class JmsManager extends AbstractManager {
      * message will be serialized to a String.
      * </p>
      * <p>
-     * When using a layout such as {@link 
org.apache.logging.log4j.core.layout.SerializedLayout}, the LogEvent message
-     * will be serialized as a Java object.
-     * </p>
-     * <p>
      * When using a layout such as {@link 
org.apache.logging.log4j.core.layout.MessageLayout} and the LogEvent message
      * is a Log4j MapMessage, the message will be serialized as a JMS 
MapMessage.
      * </p>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/770312cb/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaAppender.java
 
b/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaAppender.java
index 8122fa3..680f50d 100644
--- 
a/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaAppender.java
+++ 
b/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaAppender.java
@@ -29,13 +29,10 @@ import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.AbstractAppender;
-import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.Node;
-import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
 
 /**
  * Sends log events to an Apache Kafka topic.
@@ -45,17 +42,19 @@ public final class KafkaAppender extends AbstractAppender {
 
     /**
      * Builds KafkaAppender instances.
-     * @param <B> The type to build
+     * 
+     * @param <B>
+     *            The type to build
      */
     public static class Builder<B extends Builder<B>> extends 
AbstractAppender.Builder<B>
             implements 
org.apache.logging.log4j.core.util.Builder<KafkaAppender> {
 
-        @PluginAttribute("topic") 
+        @PluginAttribute("topic")
         private String topic;
 
         @PluginAttribute("key")
         private String key;
-        
+
         @PluginAttribute(value = "syncSend", defaultBoolean = true)
         private boolean syncSend;
 
@@ -67,8 +66,8 @@ public final class KafkaAppender extends AbstractAppender {
                 AbstractLifeCycle.LOGGER.error("No layout provided for 
KafkaAppender");
                 return null;
             }
-            final KafkaManager kafkaManager =
-                    new KafkaManager(getConfiguration().getLoggerContext(), 
getName(), topic, syncSend, properties, key);
+            final KafkaManager kafkaManager = new 
KafkaManager(getConfiguration().getLoggerContext(), getName(), topic,
+                    syncSend, properties, key);
             return new KafkaAppender(getName(), layout, getFilter(), 
isIgnoreExceptions(), kafkaManager);
         }
 
@@ -90,9 +89,10 @@ public final class KafkaAppender extends AbstractAppender {
             return asBuilder();
         }
     }
-    
+
     /**
      * Creates a builder for a KafkaAppender.
+     * 
      * @return a builder for a KafkaAppender.
      */
     @PluginBuilderFactory
@@ -124,15 +124,7 @@ public final class KafkaAppender extends AbstractAppender {
     private void tryAppend(final LogEvent event) throws ExecutionException, 
InterruptedException, TimeoutException {
         final Layout<? extends Serializable> layout = getLayout();
         byte[] data;
-        if (layout instanceof SerializedLayout) {
-            final byte[] header = layout.getHeader();
-            final byte[] body = layout.toByteArray(event);
-            data = new byte[header.length + body.length];
-            System.arraycopy(header, 0, data, 0, header.length);
-            System.arraycopy(body, 0, data, header.length, body.length);
-        } else {
-            data = layout.toByteArray(event);
-        }
+        data = layout.toByteArray(event);
         manager.send(data);
     }
 
@@ -153,10 +145,6 @@ public final class KafkaAppender extends AbstractAppender {
 
     @Override
     public String toString() {
-        return "KafkaAppender{" +
-            "name=" + getName() +
-            ", state=" + getState() +
-            ", topic=" + manager.getTopic() +
-            '}';
+        return "KafkaAppender{" + "name=" + getName() + ", state=" + 
getState() + ", topic=" + manager.getTopic() + '}';
     }
 }

Reply via email to