From 5fca8715be654bef4483d344389328725be5b2b4 Mon Sep 17 00:00:00 2001 From: dgempiuc Date: Thu, 30 Sep 2021 16:37:35 +0300 Subject: [PATCH 1/4] added layout --- .../java/co/elastic/logging/logback/EcsEncoder.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java index aa6da1c6..29c6f9da 100644 --- a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java +++ b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java @@ -28,6 +28,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.IThrowableProxy; import ch.qos.logback.classic.spi.ThrowableProxy; +import ch.qos.logback.core.Layout; import ch.qos.logback.core.encoder.EncoderBase; import co.elastic.logging.EcsJsonSerializer; import co.elastic.logging.AdditionalField; @@ -52,6 +53,7 @@ public class EcsEncoder extends EncoderBase { private boolean includeOrigin; private final List additionalFields = new ArrayList(); private OutputStream os; + protected Layout layout; @Override public byte[] headerBytes() { @@ -98,7 +100,7 @@ public byte[] encode(ILoggingEvent event) { StringBuilder builder = new StringBuilder(); EcsJsonSerializer.serializeObjectStart(builder, event.getTimeStamp()); EcsJsonSerializer.serializeLogLevel(builder, event.getLevel().toString()); - EcsJsonSerializer.serializeFormattedMessage(builder, event.getFormattedMessage()); + EcsJsonSerializer.serializeFormattedMessage(builder, this.layout.doLayout(event)); EcsJsonSerializer.serializeEcsVersion(builder); serializeMarkers(event, builder); EcsJsonSerializer.serializeServiceName(builder, serviceName); @@ -177,4 +179,12 @@ public void setEventDataset(String eventDataset) { this.eventDataset = eventDataset; } + public Layout getLayout() { + return this.layout; + } + + public void setLayout(Layout layout) { + this.layout = layout; + } + } From c887fcb9756169a51bb01b8e3420153734ced063 Mon Sep 17 00:00:00 2001 From: dgempiuc Date: Thu, 30 Sep 2021 16:44:17 +0300 Subject: [PATCH 2/4] added layout --- .../java/co/elastic/logging/logback/EcsEncoder.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java index 29c6f9da..731a21f9 100644 --- a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java +++ b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java @@ -100,7 +100,7 @@ public byte[] encode(ILoggingEvent event) { StringBuilder builder = new StringBuilder(); EcsJsonSerializer.serializeObjectStart(builder, event.getTimeStamp()); EcsJsonSerializer.serializeLogLevel(builder, event.getLevel().toString()); - EcsJsonSerializer.serializeFormattedMessage(builder, this.layout.doLayout(event)); + serializeMessage(event, builder); EcsJsonSerializer.serializeEcsVersion(builder); serializeMarkers(event, builder); EcsJsonSerializer.serializeServiceName(builder, serviceName); @@ -127,6 +127,14 @@ public byte[] encode(ILoggingEvent event) { return builder.toString().getBytes(UTF_8); } + private void serializeMessage(ILoggingEvent event, StringBuilder builder) { + if(layout == null) { + EcsJsonSerializer.serializeFormattedMessage(builder, event.getFormattedMessage()); + } else { + EcsJsonSerializer.serializeFormattedMessage(builder, this.layout.doLayout(event)); + } + } + private void serializeMarkers(ILoggingEvent event, StringBuilder builder) { Marker marker = event.getMarker(); if (includeMarkers && marker != null) { From 1539b5322ed0ca747ed7ddc48011a94bf3c891f8 Mon Sep 17 00:00:00 2001 From: "Difrango, Ronald" Date: Wed, 29 Nov 2023 10:56:12 -0500 Subject: [PATCH 3/4] Updated PR 145 - added layout support --- .../elastic/logging/logback/EcsEncoder.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java index ea48e9ed..7b845199 100644 --- a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java +++ b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java @@ -55,7 +55,7 @@ public class EcsEncoder extends EncoderBase { private boolean includeOrigin; private final List additionalFields = new ArrayList(); private OutputStream os; - protected Layout layout; + protected Layout messageLayout; @Override public byte[] headerBytes() { @@ -139,10 +139,10 @@ public byte[] encode(ILoggingEvent event) { } private void serializeMessage(ILoggingEvent event, StringBuilder builder) { - if(layout == null) { + if (messageLayout == null) { EcsJsonSerializer.serializeFormattedMessage(builder, event.getFormattedMessage()); } else { - EcsJsonSerializer.serializeFormattedMessage(builder, this.layout.doLayout(event)); + EcsJsonSerializer.serializeFormattedMessage(builder, this.messageLayout.doLayout(event)); } } @@ -151,7 +151,8 @@ private void serializeMessage(ILoggingEvent event, StringBuilder builder) { * The last character in the StringBuilder will be comma when this is called. * You must add a comma after each custom field. */ - protected void addCustomFields(ILoggingEvent event, StringBuilder builder) {} + protected void addCustomFields(ILoggingEvent event, StringBuilder builder) { + } private void serializeMarkers(ILoggingEvent event, StringBuilder builder) { Marker marker = event.getMarker(); @@ -208,11 +209,13 @@ public void setEventDataset(String eventDataset) { public void setThrowableConverter(ThrowableHandlingConverter throwableConverter) { this.throwableConverter = throwableConverter; } - public Layout getLayout() { - return this.layout; - } - public void setLayout(Layout layout) { - this.layout = layout; + /** + * The supplied Layout will be applied specifically to format the message field based on the logging event. + * + * @param messageLayout + */ + public void setMessageLayout(Layout messageLayout) { + this.messageLayout = messageLayout; } } From da9c9fa491de2316dc55b0bd34c8b08e8825fbde Mon Sep 17 00:00:00 2001 From: "Difrango, Ronald" Date: Tue, 16 Jan 2024 09:48:40 -0500 Subject: [PATCH 4/4] Update EcsEncoder.java Fixed per the feedback from the public PR. Signed-off-by: Difrango, Ronald --- .../src/main/java/co/elastic/logging/logback/EcsEncoder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java index 7b845199..57eaa0bf 100644 --- a/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java +++ b/logback-ecs-encoder/src/main/java/co/elastic/logging/logback/EcsEncoder.java @@ -142,7 +142,7 @@ private void serializeMessage(ILoggingEvent event, StringBuilder builder) { if (messageLayout == null) { EcsJsonSerializer.serializeFormattedMessage(builder, event.getFormattedMessage()); } else { - EcsJsonSerializer.serializeFormattedMessage(builder, this.messageLayout.doLayout(event)); + EcsJsonSerializer.serializeFormattedMessage(builder, messageLayout.doLayout(event)); } }