Skip to content

Commit

Permalink
Merge pull request #1832 from eclipse-ditto/migrate-to-slf4j2-logback13
Browse files Browse the repository at this point in the history
migrate logging to SLF4J 2.0.x and Logback 1.4.x
  • Loading branch information
thjaeckle committed Jan 23, 2024
2 parents 2a35c6f + 3c31341 commit 8d46fcd
Show file tree
Hide file tree
Showing 14 changed files with 348 additions and 243 deletions.
10 changes: 5 additions & 5 deletions bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@
<netty-bom.version>4.1.99.Final</netty-bom.version>
<cloudevents.version>2.3.0</cloudevents.version>

<slf4j.version>1.7.36</slf4j.version>
<logback.version>1.2.13</logback.version>
<logstash-logback-encoder.version>7.2</logstash-logback-encoder.version>
<slf4j.version>2.0.11</slf4j.version>
<logback.version>1.4.14</logback.version>
<logstash-logback-encoder.version>7.4</logstash-logback-encoder.version>
<fluency.version>2.6.5</fluency.version>
<janino.version>3.1.10</janino.version>
<janino.version>3.1.11</janino.version>

<!-- ### Metrics and Tracing -->
<kamon.version>2.6.5</kamon.version>
<kamon.version>2.6.6</kamon.version>

<jsr305.version>3.0.2</jsr305.version>

Expand Down
71 changes: 34 additions & 37 deletions connectivity/service/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,6 @@
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} %-5level [%X{correlation-id}][%X{traceparent-trace-id}] %logger{20} %X{pekkoSource} - %msg%n</pattern>
</encoder>
</appender>

<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
<target>System.err</target>
<encoder>
Expand All @@ -30,6 +24,30 @@
</filter>
</appender>

<if condition='isDefined("DITTO_LOGGING_DISABLE_SYSOUT_LOG")'>
<then>
<if condition='property("DITTO_LOGGING_DISABLE_SYSOUT_LOG").equals("true")'>
<then>
<appender name="STDOUT" class="ch.qos.logback.core.helpers.NOPAppender"/>
</then>
<else>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} %-5level [%X{correlation-id}][%X{traceparent-trace-id}] %logger{20} %X{pekkoSource} - %msg%n</pattern>
</encoder>
</appender>
</else>
</if>
</then>
<else>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} %-5level [%X{correlation-id}][%X{traceparent-trace-id}] %logger{20} %X{pekkoSource} - %msg%n</pattern>
</encoder>
</appender>
</else>
</if>

<if condition='isDefined("DITTO_LOGGING_LOGSTASH_SERVER")'>
<then>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
Expand All @@ -42,6 +60,9 @@
</encoder>
</appender>
</then>
<else>
<appender name="stash" class="ch.qos.logback.core.helpers.NOPAppender"/>
</else>
</if>

<if condition='property("DITTO_LOGGING_FILE_APPENDER").equals("true")'>
Expand All @@ -65,6 +86,9 @@
</encoder>
</appender>
</then>
<else>
<appender name="file" class="ch.qos.logback.core.helpers.NOPAppender"/>
</else>
</if>

<!-- Do not print INFO cluster messages of mongo driver: -->
Expand All @@ -79,39 +103,12 @@
<!-- Log level for the application -->
<logger name="org.eclipse.ditto" level="${LOG_LEVEL_APPLICATION:-INFO}"/>

<!-- Logging INFO messages can be disabled by setting environment variable -->
<root level="${LOG_LEVEL:-INFO}">
<!-- Logging INFO messages can be disabled by setting environment variable -->
<if condition='isDefined("DITTO_LOGGING_DISABLE_SYSOUT_LOG")'>
<then>
<if condition='property("DITTO_LOGGING_DISABLE_SYSOUT_LOG").equals("true")'>
<then>
<!-- don't use the "STDOUT" appender -->
</then>
<else>
<appender-ref ref="STDOUT"/>
</else>
</if>
</then>
<else>
<!-- if not defined, assume logging to STDOUT is desired -->
<appender-ref ref="STDOUT"/>
</else>
</if>

<!-- Always log ERRORs to syserr -->
<appender-ref ref="STDOUT"/>
<appender-ref ref="STDERR"/>

<if condition='isDefined("DITTO_LOGGING_LOGSTASH_SERVER")'>
<then>
<appender-ref ref="stash"/>
</then>
</if>

<if condition='property("DITTO_LOGGING_FILE_APPENDER").equals("true")'>
<then>
<appender-ref ref="file"/>
</then>
</if>
<appender-ref ref="stash"/>
<appender-ref ref="file"/>
</root>

</configuration>
71 changes: 34 additions & 37 deletions gateway/service/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,6 @@
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} %-5level [%X{correlation-id}][%X{traceparent-trace-id}] %logger{20} %X{pekkoSource} - %msg%n</pattern>
</encoder>
</appender>

<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
<target>System.err</target>
<encoder>
Expand All @@ -30,6 +24,30 @@
</filter>
</appender>

<if condition='isDefined("DITTO_LOGGING_DISABLE_SYSOUT_LOG")'>
<then>
<if condition='property("DITTO_LOGGING_DISABLE_SYSOUT_LOG").equals("true")'>
<then>
<appender name="STDOUT" class="ch.qos.logback.core.helpers.NOPAppender"/>
</then>
<else>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} %-5level [%X{correlation-id}][%X{traceparent-trace-id}] %logger{20} %X{pekkoSource} - %msg%n</pattern>
</encoder>
</appender>
</else>
</if>
</then>
<else>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{ISO8601} %-5level [%X{correlation-id}][%X{traceparent-trace-id}] %logger{20} %X{pekkoSource} - %msg%n</pattern>
</encoder>
</appender>
</else>
</if>

<if condition='isDefined("DITTO_LOGGING_LOGSTASH_SERVER")'>
<then>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
Expand All @@ -42,6 +60,9 @@
</encoder>
</appender>
</then>
<else>
<appender name="stash" class="ch.qos.logback.core.helpers.NOPAppender"/>
</else>
</if>

<if condition='property("DITTO_LOGGING_FILE_APPENDER").equals("true")'>
Expand All @@ -65,6 +86,9 @@
</encoder>
</appender>
</then>
<else>
<appender name="file" class="ch.qos.logback.core.helpers.NOPAppender"/>
</else>
</if>

<!-- Do not print INFO cluster messages of mongo driver: -->
Expand All @@ -77,39 +101,12 @@
<!-- Log level for the application -->
<logger name="org.eclipse.ditto" level="${LOG_LEVEL_APPLICATION:-INFO}"/>

<!-- Logging INFO messages can be disabled by setting environment variable -->
<root level="${LOG_LEVEL:-INFO}">
<!-- Logging INFO messages can be disabled by setting environment variable -->
<if condition='isDefined("DITTO_LOGGING_DISABLE_SYSOUT_LOG")'>
<then>
<if condition='property("DITTO_LOGGING_DISABLE_SYSOUT_LOG").equals("true")'>
<then>
<!-- don't use the "STDOUT" appender -->
</then>
<else>
<appender-ref ref="STDOUT"/>
</else>
</if>
</then>
<else>
<!-- if not defined, assume logging to STDOUT is desired -->
<appender-ref ref="STDOUT"/>
</else>
</if>

<!-- Always log ERRORs to syserr -->
<appender-ref ref="STDOUT"/>
<appender-ref ref="STDERR"/>

<if condition='isDefined("DITTO_LOGGING_LOGSTASH_SERVER")'>
<then>
<appender-ref ref="stash"/>
</then>
</if>

<if condition='property("DITTO_LOGGING_FILE_APPENDER").equals("true")'>
<then>
<appender-ref ref="file"/>
</then>
</if>
<appender-ref ref="stash"/>
<appender-ref ref="file"/>
</root>

</configuration>
10 changes: 10 additions & 0 deletions internal/utils/pekko/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,16 @@
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<slf4j.provider>org.eclipse.ditto.internal.utils.pekko.logging.StaticMDCServiceProvider</slf4j.provider>
</systemPropertyVariables>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,8 @@

import javax.annotation.concurrent.ThreadSafe;

import org.slf4j.impl.ObservableMdcAdapter;

/**
* This {@link org.slf4j.impl.ObservableMdcAdapter.MdcAdapterObserver} captures put entries and removed keys for later
* This {@link ObservableMdcAdapter.MdcAdapterObserver} captures put entries and removed keys for later
* test assertions.
* <p>
* since 1.3.0
Expand All @@ -45,6 +43,11 @@ public void onPut(final String key, final String value) {
allPutEntries.add(entry(key, value));
}

@Override
public void onPushByKey(final String key, final String value) {
super.onPushByKey(key, value);
}

@Override
public void onRemove(final String key) {
allRemovedKeys.add(key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.assertj.core.api.JUnitSoftAssertions;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
Expand All @@ -27,7 +28,6 @@
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.slf4j.Logger;
import org.slf4j.impl.ObservableMdcAdapter;

/**
* Unit test for {@link DefaultAutoCloseableSlf4jLogger}.
Expand All @@ -49,6 +49,11 @@ public final class DefaultAutoCloseableSlf4jLoggerTest {

private CapturingMdcAdapterObserver mdcObserver;

@BeforeClass
public static void configureProvider() {
System.setProperty("slf4j.provider", StaticMDCServiceProvider.class.getName());
}

@Before
public void setUp() {
mdcObserver = new CapturingMdcAdapterObserver();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.assertj.core.api.JUnitSoftAssertions;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
Expand All @@ -27,7 +28,6 @@
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.slf4j.Logger;
import org.slf4j.impl.ObservableMdcAdapter;

/**
* Unit test for {@link DefaultDittoLogger}.
Expand All @@ -49,6 +49,11 @@ public final class DefaultDittoLoggerTest {

private CapturingMdcAdapterObserver mdcObserver;

@BeforeClass
public static void configureProvider() {
System.setProperty("slf4j.provider", StaticMDCServiceProvider.class.getName());
}

@Before
public void setUp() {
mdcObserver = new CapturingMdcAdapterObserver();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.assertj.core.data.MapEntry;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
Expand All @@ -36,7 +37,6 @@
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.slf4j.Logger;
import org.slf4j.impl.ObservableMdcAdapter;

/**
* Unit test for {@link ImmutableDittoLogger}.
Expand All @@ -58,6 +58,11 @@ public final class ImmutableDittoLoggerTest {

private CapturingMdcAdapterObserver mdcObserver;

@BeforeClass
public static void configureProvider() {
System.setProperty("slf4j.provider", StaticMDCServiceProvider.class.getName());
}

@Before
public void setUp() {
mdcObserver = new CapturingMdcAdapterObserver();
Expand Down

0 comments on commit 8d46fcd

Please sign in to comment.