Index: flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
===================================================================
--- flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java	(revision 1447973)
+++ flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java	(working copy)
@@ -157,7 +157,7 @@
 
         if (layout == null) {
             layout = RFC5424Layout.createLayout(null, null, null, "True", null, null, null, null, excludes,
-                includes, required, null, null, null, null);
+                includes, required, null, null, null, null, null);
         }
 
         if (name == null) {
Index: core/src/main/java/org/apache/logging/log4j/core/layout/RFC5424Layout.java
===================================================================
--- core/src/main/java/org/apache/logging/log4j/core/layout/RFC5424Layout.java	(revision 1447973)
+++ core/src/main/java/org/apache/logging/log4j/core/layout/RFC5424Layout.java	(working copy)
@@ -27,6 +27,7 @@
 import org.apache.logging.log4j.core.helpers.NetUtils;
 import org.apache.logging.log4j.core.net.Facility;
 import org.apache.logging.log4j.core.net.Priority;
+import org.apache.logging.log4j.core.pattern.LiteralPatternConverter;
 import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
 import org.apache.logging.log4j.core.pattern.PatternFormatter;
 import org.apache.logging.log4j.core.pattern.PatternParser;
@@ -39,6 +40,7 @@
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
@@ -98,15 +100,17 @@
     private long lastTimestamp = -1;
     private String timestamppStr;
 
-    private final List<PatternFormatter> formatters;
+    private final List<PatternFormatter> exceptionFormatters;
+	private final List<PatternFormatter> mdcFormatters;
 
     private RFC5424Layout(final Configuration config, final Facility facility, final String id, final int ein,
                           final boolean includeMDC, final boolean includeNL, final String escapeNL, final String mdcId,
                           final String appName, final String messageId, final String excludes, final String includes,
-                          final String required, final Charset charset, final String exceptionPattern) {
+                          final String required, final Charset charset, final String exceptionPattern, final String mdcPattern) {
         super(charset);
         final PatternParser parser = createPatternParser(config);
-        formatters = exceptionPattern == null ? null : parser.parse(exceptionPattern, false);
+        this.exceptionFormatters = (exceptionPattern == null) ? null : parser.parse(exceptionPattern, false);
+        this.mdcFormatters = (mdcPattern == null) ? null : parser.parse(mdcPattern, false);
         this.facility = facility;
         this.defaultId = id == null ? DEFAULT_ID : id;
         this.enterpriseNumber = ein;
@@ -241,6 +245,19 @@
                 final int ein = id == null || id.getEnterpriseNumber() < 0 ?
                     enterpriseNumber : id.getEnterpriseNumber();
                 final StructuredDataId mdcSDID = new StructuredDataId(mdcId, ein, null, null);
+                
+                if(mdcFormatters != null) {
+                	map = new HashMap<String, String>(map);
+                    for (final PatternFormatter formatter : mdcFormatters) {
+                    	final LogEventPatternConverter converter = formatter.getConverter();
+                    	if(!(converter instanceof LiteralPatternConverter)) {
+	                        final StringBuilder field = new StringBuilder();
+	                        formatter.format(event, field);
+							map.put(converter.getName(), field.toString());
+                    	}
+                    }
+                }
+                
                 formatStructuredElement(mdcSDID, map, buf, checker);
             }
             if (text != null && text.length() > 0) {
@@ -250,9 +267,9 @@
             buf.append("- ");
             buf.append(escapeNewlines(msg.getFormattedMessage(), escapeNewLine));
         }
-        if (formatters != null && event.getThrown() != null) {
+        if (exceptionFormatters != null && event.getThrown() != null) {
             final StringBuilder exception = new StringBuilder("\n");
-            for (final PatternFormatter formatter : formatters) {
+            for (final PatternFormatter formatter : exceptionFormatters) {
                 formatter.format(event, exception);
             }
             buf.append(escapeNewlines(exception.toString(), escapeNewLine));
@@ -494,6 +511,7 @@
                                              @PluginAttr("mdcRequired") final String required,
                                              @PluginAttr("charset") final String charsetName,
                                              @PluginAttr("exceptionPattern") final String exceptionPattern,
+                                             @PluginAttr("mdcPattern") final String mdcPattern,
                                              @PluginConfiguration final Configuration config) {
         final Charset charset = Charsets.getSupportedCharset(charsetName);
         if (includes != null && excludes != null) {
@@ -509,6 +527,6 @@
         }
 
         return new RFC5424Layout(config, f, id, enterpriseNumber, isMdc, includeNewLine, escapeNL, mdcId, appName,
-                                 msgId, excludes, includes, required, charset, exceptionPattern);
+                                 msgId, excludes, includes, required, charset, exceptionPattern, mdcPattern);
     }
 }
Index: core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
===================================================================
--- core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java	(revision 1447973)
+++ core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java	(working copy)
@@ -100,7 +100,8 @@
                                                 @PluginElement("filters") final Filter filter,
                                                 @PluginConfiguration final Configuration config,
                                                 @PluginAttr("charset") final String charsetName,
-                                                @PluginAttr("exceptionPattern") final String exceptionPattern) {
+                                                @PluginAttr("exceptionPattern") final String exceptionPattern,
+                                                @PluginAttr("mdcPattern") final String mdcPattern) {
 
         final boolean isFlush = immediateFlush == null ? true : Boolean.valueOf(immediateFlush);
         final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
@@ -108,7 +109,7 @@
         final int port = portNum == null ? 0 : Integer.parseInt(portNum);
         final Layout<String> layout = RFC5424.equalsIgnoreCase(format) ?
             RFC5424Layout.createLayout(facility, id, ein, includeMDC, mdcId, includeNL, escapeNL, appName,
-                msgId, excludes, includes, required, charsetName, exceptionPattern, config) :
+                msgId, excludes, includes, required, charsetName, exceptionPattern, mdcPattern, config) :
             SyslogLayout.createLayout(facility, includeNL, escapeNL, charsetName);
 
         if (name == null) {
Index: core/src/test/java/org/apache/logging/log4j/core/layout/RFC5424LayoutTest.java
===================================================================
--- core/src/test/java/org/apache/logging/log4j/core/layout/RFC5424LayoutTest.java	(revision 1447973)
+++ core/src/test/java/org/apache/logging/log4j/core/layout/RFC5424LayoutTest.java	(working copy)
@@ -81,7 +81,7 @@
         }
         // set up appender
         final AbstractStringLayout layout = RFC5424Layout.createLayout("Local0", "Event", "3692", "true", "RequestContext",
-            "true", null, "ATM", null, "key1, key2, locale", null, "loginId", null, null, null);
+            "true", null, "ATM", null, "key1, key2, locale", null, "loginId", null, null, null, null);
         final ListAppender appender = new ListAppender("List", null, layout, true, false);
 
         appender.start();
@@ -145,7 +145,7 @@
         }
         // set up appender
         final AbstractStringLayout layout = RFC5424Layout.createLayout("Local0", "Event", "3692", "true", "RequestContext",
-            "true", "#012", "ATM", null, "key1, key2, locale", null, "loginId", null, null, null);
+            "true", "#012", "ATM", null, "key1, key2, locale", null, "loginId", null, null, null, null);
         final ListAppender appender = new ListAppender("List", null, layout, true, false);
 
         appender.start();
@@ -208,7 +208,7 @@
         }
         // set up appender
         final AbstractStringLayout layout = RFC5424Layout.createLayout("Local0", "Event", "3692", "true", "RequestContext",
-            "true", null, "ATM", null, "key1, key2, locale", null, "loginId", null, "%xEx", null);
+            "true", null, "ATM", null, "key1, key2, locale", null, "loginId", null, "%xEx", null, null);
         final ListAppender appender = new ListAppender("List", null, layout, true, false);
         appender.start();
 
Index: core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java
===================================================================
--- core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java	(revision 1447973)
+++ core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java	(working copy)
@@ -212,7 +212,7 @@
     private SyslogAppender createAppender(final String protocol, final String format) {
         return SyslogAppender.createAppender("localhost", PORT, protocol, "-1", "Test", "true", "false", "LOCAL0", "Audit",
             "18060", "true", "RequestContext", "true", null, "TestApp", "Test", null, "ipAddress,loginId", null, format, null,
-                null, null, null);
+                null, null, null, null);
     }
 
     public static class UDPSocketServer extends Thread {
