Class MdcInjectionFilter

All Implemented Interfaces:
IoFilter

public class MdcInjectionFilter extends CommonEventFilter
This filter will inject some key IoSession properties into the Mapped Diagnostic Context (MDC)

These properties will be set in the MDC for all logging events that are generated down the call stack, even in code that is not aware of MINA. By default, the following properties will be set for all transports:

  • "handlerClass"
  • "remoteAddress"
  • "localAddress"
When session.getTransportMetadata().getAddressType() == InetSocketAddress.class the following properties will also be set:
  • "remoteIp"
  • "remotePort"
  • "localIp"
  • "localPort"
User code can also add custom properties to the context, via setProperty(IoSession, String, String) If you only want the MDC to be set for the IoHandler code, it's enough to add one MdcInjectionFilter at the end of the filter chain. If you want the MDC to be set for ALL code, you should add an MdcInjectionFilter to the start of the chain and add that same MdcInjectionFilter instance after EVERY ExecutorFilter in the chain Thus it's ok to have one instance of the MdcInjectionFilter and add it multiple times to the chain but you should avoid adding multiple instances to the chain.
  • Field Details

  • Constructor Details

  • Method Details

    • filter

      protected void filter(IoFilterEvent event) throws Exception
      Specified by:
      filter in class CommonEventFilter
      Throws:
      Exception
    • getAndFillContext

      private Map<String,String> getAndFillContext(IoSession session)
    • getContext

      private static Map<String,String> getContext(IoSession session)
    • fillContext

      protected void fillContext(IoSession session, Map<String,String> context)
      write key properties of the session to the Mapped Diagnostic Context sub-classes could override this method to map more/other attributes
      Parameters:
      session - the session to map
      context - key properties will be added to this map
    • getProperty

      public static String getProperty(IoSession session, String key)
      Get the property associated with a given key
      Parameters:
      session - The IoSession
      key - The key we are looking at
      Returns:
      The associated property
    • setProperty

      public static void setProperty(IoSession session, String key, String value)
      Add a property to the context for the given session This property will be added to the MDC for all subsequent events
      Parameters:
      session - The session for which you want to set a property
      key - The name of the property (should not be null)
      value - The value of the property
    • removeProperty

      public static void removeProperty(IoSession session, String key)
      Remove a property from the context for the given session This property will be removed from the MDC for all subsequent events
      Parameters:
      session - The session for which you want to remove a property
      key - The name of the property (should not be null)