From d433751db5edeb36dadfd7579aaa55dbca2cb40e Mon Sep 17 00:00:00 2001 From: eyalkoren <41850454+eyalkoren@users.noreply.github.com> Date: Tue, 26 Apr 2022 10:25:12 +0300 Subject: [PATCH 1/2] ECS-JUL enhancements --- .../logging/AbstractEcsLoggingTest.java | 2 +- .../co/elastic/logging/jul/EcsFormatter.java | 18 ++++++++++---- .../elastic/logging/jul/JulLoggingTest.java | 24 ++++++++++++++----- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/ecs-logging-core/src/test/java/co/elastic/logging/AbstractEcsLoggingTest.java b/ecs-logging-core/src/test/java/co/elastic/logging/AbstractEcsLoggingTest.java index 7cb10c91..8358570e 100644 --- a/ecs-logging-core/src/test/java/co/elastic/logging/AbstractEcsLoggingTest.java +++ b/ecs-logging-core/src/test/java/co/elastic/logging/AbstractEcsLoggingTest.java @@ -67,7 +67,7 @@ void testMetadata() throws Exception { } @Test - final void testAdditionalFields() throws Exception { + protected final void testAdditionalFields() throws Exception { debug("test"); assertThat(getAndValidateLastLogLine().get("key1").textValue()).isEqualTo("value1"); assertThat(getAndValidateLastLogLine().get("key2").textValue()).isEqualTo("value2"); diff --git a/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java b/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java index 5a3df380..0ca87186 100644 --- a/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java +++ b/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java @@ -88,19 +88,19 @@ public String format(final LogRecord record) { return builder.toString(); } - protected void setIncludeOrigin(final boolean includeOrigin) { + public void setIncludeOrigin(final boolean includeOrigin) { this.includeOrigin = includeOrigin; } - protected void setServiceName(final String serviceName) { + public void setServiceName(final String serviceName) { this.serviceName = serviceName; } - protected void setServiceNodeName(final String serviceNodeName) { + public void setServiceNodeName(final String serviceNodeName) { this.serviceNodeName = serviceNodeName; } - protected void setStackTraceAsArray(final boolean stackTraceAsArray) { + public void setStackTraceAsArray(final boolean stackTraceAsArray) { this.stackTraceAsArray = stackTraceAsArray; } @@ -109,9 +109,19 @@ public void setEventDataset(String eventDataset) { } public void setAdditionalFields(String additionalFields) { + if (!this.additionalFields.isEmpty()) { + throw new IllegalStateException("Additional fields have already been set"); + } this.additionalFields = AdditionalField.parse(additionalFields); } + public void setAdditionalFields(List additionalFields) { + if (!this.additionalFields.isEmpty()) { + throw new IllegalStateException("Additional fields have already been set"); + } + this.additionalFields = additionalFields; + } + private String getProperty(final String name, final String defaultValue) { String value = LogManager.getLogManager().getProperty(name); if (value == null) { diff --git a/jul-ecs-formatter/src/test/java/co/elastic/logging/jul/JulLoggingTest.java b/jul-ecs-formatter/src/test/java/co/elastic/logging/jul/JulLoggingTest.java index 76be1ab5..981d771a 100644 --- a/jul-ecs-formatter/src/test/java/co/elastic/logging/jul/JulLoggingTest.java +++ b/jul-ecs-formatter/src/test/java/co/elastic/logging/jul/JulLoggingTest.java @@ -25,6 +25,7 @@ package co.elastic.logging.jul; import co.elastic.logging.AbstractEcsLoggingTest; +import co.elastic.logging.AdditionalField; import co.elastic.logging.ParameterizedLogSupport; import com.fasterxml.jackson.databind.JsonNode; import org.junit.jupiter.api.BeforeEach; @@ -34,6 +35,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.List; import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.Level; @@ -67,7 +69,7 @@ public void publish(LogRecord record) { } } - private final EcsFormatter formatter = new EcsFormatter(); + private EcsFormatter formatter; private final Logger logger = Logger.getLogger(""); @@ -108,17 +110,22 @@ public JsonNode getLastLogLine() throws IOException { @BeforeEach void setUp() { + setUpFormatter(); + formatter.setAdditionalFields("key1=value1,key2=value2"); + } + + private void setUpFormatter() { clearHandlers(); - + + formatter = new EcsFormatter(); formatter.setIncludeOrigin(true); formatter.setServiceName("test"); formatter.setServiceNodeName("test-node"); formatter.setEventDataset("testdataset"); - formatter.setAdditionalFields("key1=value1,key2=value2"); - + Handler handler = new InMemoryStreamHandler(out, formatter); handler.setLevel(Level.ALL); - + logger.addHandler(handler); logger.setLevel(Level.ALL); } @@ -131,11 +138,16 @@ void testLogOrigin() throws Exception { //No file.line for JUL } + @Test + void testAdditionalFieldsAsList() throws Exception { + setUpFormatter(); + formatter.setAdditionalFields(List.of(new AdditionalField("key1", "value1"), new AdditionalField("key2", "value2"))); + super.testAdditionalFields(); + } private void clearHandlers() { for (Handler handler : logger.getHandlers()) { logger.removeHandler(handler); } } - } From 1f198c4cfd4a50fd82b2dfa01d7e36741926c79e Mon Sep 17 00:00:00 2001 From: eyalkoren <41850454+eyalkoren@users.noreply.github.com> Date: Tue, 26 Apr 2022 14:26:13 +0300 Subject: [PATCH 2/2] Removing double-setting safeguard --- .../src/main/java/co/elastic/logging/jul/EcsFormatter.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java b/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java index 0ca87186..b318b7cb 100644 --- a/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java +++ b/jul-ecs-formatter/src/main/java/co/elastic/logging/jul/EcsFormatter.java @@ -109,16 +109,10 @@ public void setEventDataset(String eventDataset) { } public void setAdditionalFields(String additionalFields) { - if (!this.additionalFields.isEmpty()) { - throw new IllegalStateException("Additional fields have already been set"); - } this.additionalFields = AdditionalField.parse(additionalFields); } public void setAdditionalFields(List additionalFields) { - if (!this.additionalFields.isEmpty()) { - throw new IllegalStateException("Additional fields have already been set"); - } this.additionalFields = additionalFields; }