[28.09.20] Logback and MDC ids

This commit is contained in:
Andy Sotheran 2020-09-28 17:55:42 +01:00
parent 9603794f91
commit a396b0f002
5 changed files with 73 additions and 0 deletions

View File

@ -21,6 +21,7 @@
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<logback.contrib.version>0.1.5</logback.contrib.version>
</properties>
<dependencies>
@ -98,6 +99,14 @@
<optional>true</optional>
</dependency>
<!--- Logging -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.4</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -23,6 +23,7 @@ import java.util.concurrent.CountDownLatch;
import static cryptosky.me.ArtemisSyncMessaging.*;
import static cryptosky.me.helpers.Utils.getCorrelationId;
import static cryptosky.me.logging.CorrelationInfo.setCorrelationId;
import static java.lang.String.format;
@Component
@ -60,6 +61,8 @@ public class PriceConsumer {
logger.info("Received Message: " + message.getBody(String.class));
try {
setCorrelationId(correlationId);
if (message.getBody(String.class) == null | message.getBody(String.class).equals("")) {
throw new NoBodyOrStringException();
}

View File

@ -0,0 +1,22 @@
package cryptosky.me.logging;
import org.slf4j.MDC;
public class CorrelationInfo {
public static final String CORRELATION_ID = "X-CRYPTO-Correlation-ID";
public static final String SYNC_ID = "X-CRYPTO-Sync-ID";
public static void setCorrelationId(String correlationId) {
MDC.put(CORRELATION_ID, correlationId);
}
public static void setSyncId(String syncId) {
MDC.put(SYNC_ID, syncId);
}
public static void clear() {
MDC.remove(CORRELATION_ID);
MDC.remove(SYNC_ID);
}
}

View File

@ -32,6 +32,7 @@ import static cryptosky.me.ArtemisSyncMessaging.*;
import static cryptosky.me.SupportedCurrencies.*;
import static cryptosky.me.helpers.Utils.format;
import static cryptosky.me.logging.CorrelationInfo.setSyncId;
@Service
public class PriceService {
@ -79,6 +80,8 @@ public class PriceService {
@Transactional
public void createRecord(CryptoPriceModel cryptoPriceModel, String correlationId, String syncId, TextMessage message) {
try {
setSyncId(syncId);
switch (cryptoPriceModel.getType()) {
case BTC:
BtcPriceModel priceModel = new BtcPriceModel();

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs" />
<appender name="logstash" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<fieldNames>
<version>[ignore]</version>
<levelValue>[ignore]</levelValue>
</fieldNames>
</encoder>
</appender>
<appender name="console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg {%mdc}%n%throwable
</Pattern>
</layout>
</appender>
<springProfile name="!local">
<root level="INFO">
<appender-ref ref="logstash"/>
</root>
</springProfile>
<springProfile name="local">
<root level="INFO">
<appender-ref ref="console"/>
</root>
</springProfile>
<jmxConfigurator/>
</configuration>