Package org.apache.mina.filter.logging
Class MdcInjectionFilter
- java.lang.Object
-
- org.apache.mina.core.filterchain.IoFilterAdapter
-
- org.apache.mina.filter.util.CommonEventFilter
-
- org.apache.mina.filter.logging.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"
session.getTransportMetadata().getAddressType() == InetSocketAddress.class
the following properties will also be set:- "remoteIp"
- "remotePort"
- "localIp"
- "localPort"
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.- Author:
- Apache MINA Project
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MdcInjectionFilter.MdcKey
This enum lists all the possible keys this filter will process-
Nested classes/interfaces inherited from interface org.apache.mina.core.filterchain.IoFilter
IoFilter.NextFilter
-
-
Constructor Summary
Constructors Constructor Description MdcInjectionFilter()
Create a new MdcInjectionFilter instanceMdcInjectionFilter(EnumSet<MdcInjectionFilter.MdcKey> keys)
Use this constructor when you want to specify which keys to add to the MDC.MdcInjectionFilter(MdcInjectionFilter.MdcKey... keys)
Use this constructor when you want to specify which keys to add to the MDC You could still add custom keys viasetProperty(IoSession, String, String)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 attributesprotected void
filter(IoFilterEvent event)
static String
getProperty(IoSession session, String key)
Get the property associated with a given keystatic 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 eventsstatic 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-
Methods inherited from class org.apache.mina.filter.util.CommonEventFilter
exceptionCaught, filterClose, filterWrite, messageReceived, messageSent, sessionClosed, sessionCreated, sessionIdle, sessionOpened
-
Methods inherited from class org.apache.mina.core.filterchain.IoFilterAdapter
destroy, init, inputClosed, onPostAdd, onPostRemove, onPreAdd, onPreRemove, toString
-
-
-
-
Constructor Detail
-
MdcInjectionFilter
public MdcInjectionFilter(EnumSet<MdcInjectionFilter.MdcKey> keys)
Use this constructor when you want to specify which keys to add to the MDC. You could still add custom keys viasetProperty(IoSession, String, String)
- Parameters:
keys
- set of keys that should be added to the MDC- See Also:
setProperty(org.apache.mina.core.session.IoSession, String, String)
-
MdcInjectionFilter
public MdcInjectionFilter(MdcInjectionFilter.MdcKey... keys)
Use this constructor when you want to specify which keys to add to the MDC You could still add custom keys viasetProperty(IoSession, String, String)
- Parameters:
keys
- list of keys that should be added to the MDC- See Also:
setProperty(org.apache.mina.core.session.IoSession, String, String)
-
MdcInjectionFilter
public MdcInjectionFilter()
Create a new MdcInjectionFilter instance
-
-
Method Detail
-
filter
protected void filter(IoFilterEvent event) throws Exception
- Specified by:
filter
in classCommonEventFilter
- Throws:
Exception
-
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 mapcontext
- 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
- TheIoSession
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 propertykey
- 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 propertykey
- The name of the property (should not be null)
-
-