The following code:
for (String mdcKey : mdcKeys.split(","))
{
Object value = event.getMDC(mdcKey);
if (value != null)
{
data.put(mdcKey, value);
}
}
can be replaced by
for(Map.Entry<String, Object> entry:((Hashtable<String, Object>)MDC.getContext()).entrySet())
{
if (entry.getValue() != null)
data.put(entry.getKey(), entry.getValue());
}
This seems to fix the problem for me, although it may not be efficient.