anchor.diff:  public class CustomJsonLayout extends JsonLayout {
       @Override
       protected void addCustomDataToJsonMap(Map<String, Object> map, ILoggingEvent event) {
  -        map.put("application", "log-odyssey");
  +        map.put("application", "log-odissey");
           try {
               map.put("host", InetAddress.getLocalHost().getHostName());
           } catch (UnknownHostException e) {
  
positive.code: demoLogger.info("Hello world!");
  MDC.remove("userId");
  ----
  The MDC is a map-like object filled in the Java code and used in the back-end logging library to output custom data.
  With the adequate configuration, we can get the user Id the log:
  [source]
  ----
  21:10:29.178 [Thread-1] gquintana INFO  logodyssey.DemoLogger - Hello world!
  ----
  The MDC can store any information about the user (user Id, session Id, token Id), about the current request (request Id, transaction Id), about long running threads (batch instance Id, broker client Id). 
  Later on, this information will be part of the log.
  
  Having this kind of information allows to group logs by user, by request, by processing.
  Remember that logs may be scattered across different servers, on different time periods. 
  In short it allows to correlate logs belonging to the same scenario and find answers to questions like "what was the user X doing when he met this nasty error?"
  
  Let's get back to the example, we saw the MDC stores extra information about logs.
  
negative.code: In the end, it looks very similar to the first one, a bit more verbose though:
  [source,xml]
  ----
      <appender name="FILE
      "class="ch.qos.logback.core.FileAppender">
          <file>target/log/log-odissey.log</file>
          <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
              <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
                  <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter"/>
  