From ca94370e55d54a38bda194c10be27920129d1dac Mon Sep 17 00:00:00 2001 From: eyalkoren <41850454+eyalkoren@users.noreply.github.com> Date: Tue, 23 Feb 2021 12:19:53 +0200 Subject: [PATCH 1/2] Fixing Logback 1.1 support and add legacy tests --- logback-ecs-encoder/pom.xml | 17 +++++++ .../elastic/logging/logback/EcsEncoder.java | 9 +++- .../logback/EcsEncoderIntegrationTest.java | 2 +- .../logging/logback/EcsEncoderTest.java | 2 +- logback-legacy-tests/pom.xml | 46 +++++++++++++++++++ .../LegacyEcsEncoderIntegrationTest.java | 31 +++++++++++++ .../java/logback/LegacyEcsEncoderTest.java | 31 +++++++++++++ pom.xml | 1 + 8 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 logback-legacy-tests/pom.xml create mode 100644 logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java create mode 100644 logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java diff --git a/logback-ecs-encoder/pom.xml b/logback-ecs-encoder/pom.xml index 8301c1c2..c8de0b92 100644 --- a/logback-ecs-encoder/pom.xml +++ b/logback-ecs-encoder/pom.xml @@ -14,6 +14,23 @@ ${project.basedir}/.. + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.2 + + + + test-jar + + + + + + + ${project.groupId} 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 87a018e8..530d2820 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 @@ -75,9 +75,14 @@ public void init(OutputStream os) { /** * This method has been removed in logback 1.2. * To make this lib backwards compatible with logback 1.1 we have implement this method. + * However, since we compile with 1.2.x, this method is not compiled as an interface method, which means that there won't be type + * erasure. Therefore, we must use a {@link Object} argument for it to be compatible with 1.1.x. */ - public void doEncode(ILoggingEvent event) throws IOException { - os.write(encode(event)); + public void doEncode(Object event) throws IOException { + os.write(encode((ILoggingEvent) event)); + // on logback 1.1.x versions this encoder always works as if immediateFlush == true. In later versions, flushing is only handled by + // the appender rather than the encoder + os.flush(); } /** diff --git a/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderIntegrationTest.java b/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderIntegrationTest.java index 1a3bf444..a4ef1923 100644 --- a/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderIntegrationTest.java +++ b/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderIntegrationTest.java @@ -32,7 +32,7 @@ import java.io.IOException; -class EcsEncoderIntegrationTest extends AbstractEcsEncoderTest { +public class EcsEncoderIntegrationTest extends AbstractEcsEncoderTest { private OutputStreamAppender appender; @BeforeEach diff --git a/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderTest.java b/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderTest.java index 6285e53c..e8f915ae 100644 --- a/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderTest.java +++ b/logback-ecs-encoder/src/test/java/co/elastic/logging/logback/EcsEncoderTest.java @@ -31,7 +31,7 @@ import java.io.IOException; -class EcsEncoderTest extends AbstractEcsEncoderTest { +public class EcsEncoderTest extends AbstractEcsEncoderTest { private OutputStreamAppender appender; diff --git a/logback-legacy-tests/pom.xml b/logback-legacy-tests/pom.xml new file mode 100644 index 00000000..bfe04bdb --- /dev/null +++ b/logback-legacy-tests/pom.xml @@ -0,0 +1,46 @@ + + + + ecs-logging-java-parent + co.elastic.logging + 1.0.1-SNAPSHOT + + 4.0.0 + + logback-legacy-tests + + + ${project.basedir}/.. + true + + + + + ${project.groupId} + ecs-logging-core + ${project.version} + test-jar + test + + + ${project.groupId} + logback-ecs-encoder + ${project.version} + test + + + ${project.groupId} + logback-ecs-encoder + ${project.version} + test-jar + test + + + ch.qos.logback + logback-classic + 1.1.0 + test + + + + \ No newline at end of file diff --git a/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java b/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java new file mode 100644 index 00000000..f5ae9996 --- /dev/null +++ b/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java @@ -0,0 +1,31 @@ +/*- + * #%L + * Java ECS logging + * %% + * Copyright (C) 2019 - 2020 Elastic and contributors + * %% + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. 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. + * #L% + */ +package logback; + +import co.elastic.logging.logback.EcsEncoderIntegrationTest; + +class LegacyEcsEncoderIntegrationTest extends EcsEncoderIntegrationTest { + +} diff --git a/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java b/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java new file mode 100644 index 00000000..36c161f3 --- /dev/null +++ b/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java @@ -0,0 +1,31 @@ +/*- + * #%L + * Java ECS logging + * %% + * Copyright (C) 2019 - 2020 Elastic and contributors + * %% + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. 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. + * #L% + */ +package logback; + +import co.elastic.logging.logback.EcsEncoderTest; + +class LegacyEcsEncoderTest extends EcsEncoderTest { + +} diff --git a/pom.xml b/pom.xml index 531796bb..7c6ffd24 100644 --- a/pom.xml +++ b/pom.xml @@ -15,6 +15,7 @@ jboss-logmanager-ecs-formatter log4j2-legacy-tests log4j-legacy-tests + logback-legacy-tests pom 2019 From d78ef0303f8db144bc040defeafdacae3cd0786b Mon Sep 17 00:00:00 2001 From: eyalkoren <41850454+eyalkoren@users.noreply.github.com> Date: Tue, 23 Feb 2021 12:49:55 +0200 Subject: [PATCH 2/2] Fix package --- .../logging}/logback/LegacyEcsEncoderIntegrationTest.java | 4 +--- .../elastic/logging}/logback/LegacyEcsEncoderTest.java | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) rename logback-legacy-tests/src/test/java/{ => co/elastic/logging}/logback/LegacyEcsEncoderIntegrationTest.java (92%) rename logback-legacy-tests/src/test/java/{ => co/elastic/logging}/logback/LegacyEcsEncoderTest.java (93%) diff --git a/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java b/logback-legacy-tests/src/test/java/co/elastic/logging/logback/LegacyEcsEncoderIntegrationTest.java similarity index 92% rename from logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java rename to logback-legacy-tests/src/test/java/co/elastic/logging/logback/LegacyEcsEncoderIntegrationTest.java index f5ae9996..164764b7 100644 --- a/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderIntegrationTest.java +++ b/logback-legacy-tests/src/test/java/co/elastic/logging/logback/LegacyEcsEncoderIntegrationTest.java @@ -22,9 +22,7 @@ * under the License. * #L% */ -package logback; - -import co.elastic.logging.logback.EcsEncoderIntegrationTest; +package co.elastic.logging.logback; class LegacyEcsEncoderIntegrationTest extends EcsEncoderIntegrationTest { diff --git a/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java b/logback-legacy-tests/src/test/java/co/elastic/logging/logback/LegacyEcsEncoderTest.java similarity index 93% rename from logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java rename to logback-legacy-tests/src/test/java/co/elastic/logging/logback/LegacyEcsEncoderTest.java index 36c161f3..75bdf93b 100644 --- a/logback-legacy-tests/src/test/java/logback/LegacyEcsEncoderTest.java +++ b/logback-legacy-tests/src/test/java/co/elastic/logging/logback/LegacyEcsEncoderTest.java @@ -22,9 +22,7 @@ * under the License. * #L% */ -package logback; - -import co.elastic.logging.logback.EcsEncoderTest; +package co.elastic.logging.logback; class LegacyEcsEncoderTest extends EcsEncoderTest {