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 + * @Rule * public LoggerContextRule context = new LoggerContextRule("log4j-list.xml"); * private ListAppender listAppender; * - * @Before + * @Before * public void before() throws Exception { * listAppender = context.getListAppender("List"); * } * - * @Test + * @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() + '}'; } }
