anchor.diff:          </encoder>
       </appender>
   ----
  -The result is very close as well, but fields are named differently:
  +The result is very close as well, even though the fields are named differently:
   [source,json]
   ----
   {
  
positive.code: 2. The information may no be properly transfered from one thread to another. Think about asynchronous calls.
  
  As a result, calling `MDC.remove`, like the above example, (or `MDC.clear`) is required to clean the MDC after usage.
  To avoid forgetting to do housekeeping afterwards, we can use a try-with-resource construct:
  [source,java]
  ----
  try(MDC.MDCCloseable mdc = MDC.putCloseable("userId", "gquintana")) {
  
negative.code: == JSON logging with Logback
  
  At this point, a log is more than simple string, 
  it is qualified with useful information: timestamp, level, thread, user Id...
  How can we write this data structure on disk or send it over the wire to a log collection tool?
  We have to serialize it.
  For a human being, a simple text format as shown above is readable enough.
  However, for a machine, this is just a word soup without any structure.
  In short, to send structured logs to a log collection tool 
  and benefit from this structure (search by user, by thread...), 
  we must use a structured format, like JSON for example.
  
  Compared to the Syslog format, another popular log format, the JSON format
  
  * Can properly handle  multi-line logs like stack traces/call traces or messages containing line separators (wanted or not)
  * Is a versatile format and can have custom fields like user Id, transaction Id 
  