Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

migrate logging to SLF4J 2.0.x and Logback 1.4.x #1832

Merged
merged 9 commits into from
Jan 23, 2024
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
Loading
Loading