Author: rgoers
Date: Sat May 10 20:25:28 2014
New Revision: 1593727

URL: http://svn.apache.org/r1593727
Log:
LOG4J2-623 - Format ThreadContext properties as a JSON map in JSONLayout

Modified:
    
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JSONLayout.java
    
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JSONLayoutTest.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml

Modified: 
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JSONLayout.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JSONLayout.java?rev=1593727&r1=1593726&r2=1593727&view=diff
==============================================================================
--- 
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JSONLayout.java
 (original)
+++ 
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JSONLayout.java
 Sat May 10 20:25:28 2014
@@ -253,34 +253,25 @@ public class JSONLayout extends Abstract
             buf.append(',');
             buf.append(this.eol);
             buf.append(this.indent2);
-            buf.append("\"Properties\":[");
-            buf.append(this.eol);
+            buf.append("\"Properties\": {");
             final Set<Entry<String, String>> entrySet = 
event.getContextMap().entrySet();
             int i = 1;
             for (final Map.Entry<String, String> entry : entrySet) {
-                buf.append(this.indent3);
-                buf.append('{');
                 buf.append(this.eol);
-                buf.append(this.indent4);
-                buf.append("\"name\":\"");
+                buf.append(this.indent3);
+                buf.append("\"");
                 
buf.append(Transform.escapeJsonControlCharacters(entry.getKey()));
-                buf.append("\",");
-                buf.append(this.eol);
-                buf.append(this.indent4);
-                buf.append("\"value\":\"");
+                buf.append("\": \"");
                 
buf.append(Transform.escapeJsonControlCharacters(String.valueOf(entry.getValue())));
-                buf.append('"');
-                buf.append(this.eol);
-                buf.append(this.indent3);
-                buf.append('}');
+                buf.append("\"}");
                 if (i < entrySet.size()) {
                     buf.append(',');
                 }
-                buf.append(this.eol);
                 i++;
             }
+            buf.append(this.eol);
             buf.append(this.indent2);
-            buf.append(']');
+            buf.append('}');
         }
 
         buf.append(this.eol);

Modified: 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JSONLayoutTest.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JSONLayoutTest.java?rev=1593727&r1=1593726&r2=1593727&view=diff
==============================================================================
--- 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JSONLayoutTest.java
 (original)
+++ 
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JSONLayoutTest.java
 Sat May 10 20:25:28 2014
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.la
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.util.List;
 import java.util.Map;
@@ -129,6 +130,8 @@ public class JSONLayoutTest {
         this.checkAt("\"logger\":\"root\",", 2, list);
         this.checkAt("\"level\":\"DEBUG\",", 4, list);
         this.checkAt("\"message\":\"starting mdc pattern test\",", 6, list);
+        this.checkAt("\"Properties\": {", 41, list);
+        this.checkAt("\"key2\": \"value2\"}", list, 42, 43);
         for (Appender app : appenders.values()) {
             root.addAppender(app);
         }
@@ -167,7 +170,17 @@ public class JSONLayoutTest {
     }
 
     private void checkAt(String expected, int lineIndex, List<String> list) {
-        final String trimedLine = list.get(lineIndex).trim();
-        assertTrue("Incorrect line index " + lineIndex + ": \"" + trimedLine + 
'"', trimedLine.equals(expected));
+        final String trimmedLine = list.get(lineIndex).trim();
+        assertTrue("Incorrect line index " + lineIndex + ": \"" + trimmedLine 
+ '"', trimmedLine.equals(expected));
+    }
+
+    private void checkAt(String expected, List<String> list, int... 
lineIndexes) {
+        for (int lineIndex : lineIndexes) {
+            final String trimmedLine = list.get(lineIndex).trim();
+            if (trimmedLine.startsWith(expected)) {
+                return;
+            }
+        }
+        fail("Incorrect lines. Expected: " + expected);
     }
 }

Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1593727&r1=1593726&r2=1593727&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/src/changes/changes.xml (original)
+++ logging/log4j/log4j2/trunk/src/changes/changes.xml Sat May 10 20:25:28 2014
@@ -22,6 +22,9 @@
   </properties>
   <body>
     <release version="2.0-rc2" date="2014-MM-DD" description="Bug fixes and 
enhancements">
+      <action issue="LOG4J2-623" dev="rgoers" type="fix">
+        Generate MDC properties as a JSON map in JSONLayout.
+      </action>
       <action issue="LOG4J2-566" dev="rpopma" type="update" due-to="Luigi 
Alice">
         Made RollingRandomAccessFileAppender buffer size configurable.
       </action>


Reply via email to