From 5fca8715be654bef4483d344389328725be5b2b4 Mon Sep 17 00:00:00 2001 From: dgempiuc Date: Thu, 30 Sep 2021 16:37:35 +0300 Subject: [PATCH 1/2] 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/2] 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) {