On 9 March 2015 at 22:37, Ceki Gülcü <ceki@qos.ch> wrote:
MDC is a thread-wide structure. At present time, it cannot be set per logging event. Any changes you make to the mdcPropertyMap (retrieved by calling event.getMDCPropertyMap()) will be visible to all future events generated in the same thread.

Please forgive my ignorance if I say something wrong.

ch.qos.logback.classic.spi.LoggingEvent#getMDCPropertyMap returns:

1. If MDCAdapter has an already property map, It returns this map
2. If MDCAdapter has not a map, it returns a static map(CACHED_NULL_MAP) which is shared among other threads as well. If I set it mistakenly, It will be used by other threads.  

This parts seems a little bid problematic.  I just want to share same map reference between event and MDCAdapter which will let me:


    public  FilterReply decide(ILoggingEvent event) {
       if  (event.getLevel().isGreaterOrEqual(Level.WARN)) {
          MDC.put("demo","demo");
       }
       return  FilterReply.ACCEPT;
    }
 
Also I am expecting to be cleared in case a MDC.remove call. What do you think?