From 5675cc098ac3a1560155dfcdaaef4811a17218f2 Mon Sep 17 00:00:00 2001 From: bparmar-splunk Date: Thu, 1 Sep 2022 14:57:45 +0530 Subject: [PATCH] Layout is replaced with Encoder Update: - Layout is deprecated and encoder is introduced when socket is used. - Logback configuration file is updated with encoder settings. --- .../java/com/splunk/logging/TcpAppender.java | 30 +++++++++++++++---- src/test/resources/logback.xml | 4 +-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/splunk/logging/TcpAppender.java b/src/main/java/com/splunk/logging/TcpAppender.java index eeb00511..592a933b 100644 --- a/src/main/java/com/splunk/logging/TcpAppender.java +++ b/src/main/java/com/splunk/logging/TcpAppender.java @@ -18,6 +18,8 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; import ch.qos.logback.core.Layout; +import ch.qos.logback.core.encoder.Encoder; +import ch.qos.logback.core.encoder.LayoutWrappingEncoder; import ch.qos.logback.core.net.DefaultSocketConnector; import ch.qos.logback.core.net.SocketConnector; import ch.qos.logback.core.util.CloseUtil; @@ -52,7 +54,10 @@ public class TcpAppender extends AppenderBase implements Runnable private int port; private InetAddress address; - private Layout layout; + /** + * Layout is replaced with Encoder because Logback has deprecated the use of Layout directly to format message. + */ + private Encoder encoder; private ExecutorService executor; private Future connectorTask; @@ -122,7 +127,7 @@ public void run() { while (true) { ILoggingEvent event = queue.take(); - String formatted = layout.doLayout(event); + String formatted = new String(encoder.encode(event)); writer.write(formatted); writer.flush(); } @@ -219,8 +224,8 @@ public void start() { addError("Queue size must be non-negative"); } - if (this.layout == null) { - addError("No layout set for the appender named [" + name + "]."); + if (this.encoder == null) { + addError("No encoder set for the appender named [" + name + "]."); errorPresent = true; } @@ -311,8 +316,21 @@ protected void append(ILoggingEvent event) { public void setQueueSize(int queueSize) { this.queueSize = queueSize; } public int getQueueSize() { return this.queueSize; } - public void setLayout(Layout layout) { this.layout = layout; } - public Layout getLayout() { return this.layout; } + public void setLayout(Layout layout) { + this.addWarn("This appender no longer admits a layout as a sub-component, set an encoder instead."); + this.addWarn("To ensure compatibility, wrapping your layout in LayoutWrappingEncoder."); + this.addWarn("See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details"); + + LayoutWrappingEncoder layoutWrappingEncoder = new LayoutWrappingEncoder(); + layoutWrappingEncoder.setLayout(layout); + layoutWrappingEncoder.setContext(this.context); + this.encoder = layoutWrappingEncoder; + } + public Encoder getEncoder() { return this.encoder; } + + public void setEncoder(Encoder encoder) { + this.encoder = encoder; + } /** * The eventDelayLimit takes a non-negative integer representing the diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index 60c24017..505d338c 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -39,9 +39,9 @@ under the License. 127.0.0.1 15000 - + %thread %level: %msg%n - +