anchor.diff:  How can we write this data structure on disk or send it over the wire to 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, it is a just a word soup without any structure.
  +However, for a machine, this is a just a word soup without any structure.
   In order to send structured logs to a log collection tool, 
   and take advantage of this structure (search by user, by thread...), 
   we must use a structured format like JSON.
  
positive.code: Compared to the Syslog, 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)
  * Can have custom fields like user Id, transaction Id 
  * Is more verbose, so compression (GZip or the like) may be required to reduce the weight
  
  Most popular log collection tools likes Filebeat, Graylog, Fluentd already use some kind of compressed JSON format under the hood.
  
negative.code: ----
  21:10:29.178 [Thread-1] INFO  logodyssey.DemoLogger - Hello world!
  ----
  Notice how this "Hello world!" message is qualified with several fields:
  a timestamp, a thread Id, a level and a logger/category.
  
  This is what the term "structured logging" means, 
  a log is more than a message string. 
  The message is associated with contextual information about what was occurring, 
  it tells more detail about what was going on when this log was printed
  
  How can we enrich this contextual information provided by default,
  and add the user Id for example?
  It is the purpose of the MDC (Mapped Diagnostic Context):
  [source,java]
  