Class LogbackMDCAdapter

  • All Implemented Interfaces:
    org.slf4j.spi.MDCAdapter

    public class LogbackMDCAdapter
    extends java.lang.Object
    implements org.slf4j.spi.MDCAdapter
    A Mapped Diagnostic Context, or MDC in short, is an instrument for distinguishing interleaved log output from different sources. Log output is typically interleaved when a server handles multiple clients near-simultaneously.

    The MDC is managed on a per thread basis. A child thread automatically inherits a copy of the mapped diagnostic context of its parent.

    For more information about MDC, please refer to the online manual at http://logback.qos.ch/manual/mdc.html

    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.lang.ThreadLocal<java.util.Map<java.lang.String,​java.lang.String>> copyOnThreadLocal  
      (package private) java.lang.ThreadLocal<java.lang.Integer> lastOperation  
      private static int MAP_COPY_OPERATION  
      private static int WRITE_OPERATION  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Clear all entries in the MDC.
      private java.util.Map<java.lang.String,​java.lang.String> duplicateAndInsertNewMap​(java.util.Map<java.lang.String,​java.lang.String> oldMap)  
      java.lang.String get​(java.lang.String key)
      Get the context identified by the key parameter.
      private java.lang.Integer getAndSetLastOperation​(int op)  
      java.util.Map<java.lang.String,​java.lang.String> getCopyOfContextMap()
      Return a copy of the current thread's context map.
      java.util.Set<java.lang.String> getKeys()
      Returns the keys in the MDC as a Set.
      java.util.Map<java.lang.String,​java.lang.String> getPropertyMap()
      Get the current thread's MDC as a map.
      void put​(java.lang.String key, java.lang.String val)
      Put a context value (the val parameter) as identified with the key parameter into the current thread's context map.
      void remove​(java.lang.String key)
      Remove the the context identified by the key parameter.
      void setContextMap​(java.util.Map<java.lang.String,​java.lang.String> contextMap)  
      private boolean wasLastOpReadOrNull​(java.lang.Integer lastOp)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • copyOnThreadLocal

        final java.lang.ThreadLocal<java.util.Map<java.lang.String,​java.lang.String>> copyOnThreadLocal
      • lastOperation

        final java.lang.ThreadLocal<java.lang.Integer> lastOperation
    • Constructor Detail

      • LogbackMDCAdapter

        public LogbackMDCAdapter()
    • Method Detail

      • getAndSetLastOperation

        private java.lang.Integer getAndSetLastOperation​(int op)
      • wasLastOpReadOrNull

        private boolean wasLastOpReadOrNull​(java.lang.Integer lastOp)
      • duplicateAndInsertNewMap

        private java.util.Map<java.lang.String,​java.lang.String> duplicateAndInsertNewMap​(java.util.Map<java.lang.String,​java.lang.String> oldMap)
      • put

        public void put​(java.lang.String key,
                        java.lang.String val)
                 throws java.lang.IllegalArgumentException
        Put a context value (the val parameter) as identified with the key parameter into the current thread's context map. Note that contrary to log4j, the val parameter can be null.

        If the current thread does not have a context map it is created as a side effect of this call.

        Specified by:
        put in interface org.slf4j.spi.MDCAdapter
        Throws:
        java.lang.IllegalArgumentException - in case the "key" parameter is null
      • remove

        public void remove​(java.lang.String key)
        Remove the the context identified by the key parameter.

        Specified by:
        remove in interface org.slf4j.spi.MDCAdapter
      • clear

        public void clear()
        Clear all entries in the MDC.
        Specified by:
        clear in interface org.slf4j.spi.MDCAdapter
      • get

        public java.lang.String get​(java.lang.String key)
        Get the context identified by the key parameter.

        Specified by:
        get in interface org.slf4j.spi.MDCAdapter
      • getPropertyMap

        public java.util.Map<java.lang.String,​java.lang.String> getPropertyMap()
        Get the current thread's MDC as a map. This method is intended to be used internally.
      • getKeys

        public java.util.Set<java.lang.String> getKeys()
        Returns the keys in the MDC as a Set. The returned value can be null.
      • getCopyOfContextMap

        public java.util.Map<java.lang.String,​java.lang.String> getCopyOfContextMap()
        Return a copy of the current thread's context map. Returned value may be null.
        Specified by:
        getCopyOfContextMap in interface org.slf4j.spi.MDCAdapter
      • setContextMap

        public void setContextMap​(java.util.Map<java.lang.String,​java.lang.String> contextMap)
        Specified by:
        setContextMap in interface org.slf4j.spi.MDCAdapter