Return-Path: X-Original-To: apmail-logging-commits-archive@minotaur.apache.org Delivered-To: apmail-logging-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0D5F710364 for ; Wed, 27 Nov 2013 01:59:11 +0000 (UTC) Received: (qmail 6036 invoked by uid 500); 27 Nov 2013 01:59:11 -0000 Delivered-To: apmail-logging-commits-archive@logging.apache.org Received: (qmail 6016 invoked by uid 500); 27 Nov 2013 01:59:10 -0000 Mailing-List: contact commits-help@logging.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@logging.apache.org Delivered-To: mailing list commits@logging.apache.org Received: (qmail 6009 invoked by uid 99); 27 Nov 2013 01:59:10 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Nov 2013 01:59:10 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Nov 2013 01:59:09 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 09497238888F; Wed, 27 Nov 2013 01:58:49 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1545905 - in /logging/log4j/log4j2/trunk: log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ log4j-core/src/main/resources/ log4j-core/src/test/java/org/apache/logging/log4j/core/layout/ src/changes/ src/site/xdoc/manual/ Date: Wed, 27 Nov 2013 01:58:48 -0000 To: commits@logging.apache.org From: ggregory@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131127015849.09497238888F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ggregory Date: Wed Nov 27 01:58:48 2013 New Revision: 1545905 URL: http://svn.apache.org/r1545905 Log: [LOG4J2-447] XMLLayout does not include marker name. Apply patch with changes, and also adjust layout documentation to fix element name casing. Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XMLLayout.java logging/log4j/log4j2/trunk/log4j-core/src/main/resources/Log4j-events.dtd logging/log4j/log4j2/trunk/log4j-core/src/main/resources/Log4j-events.xsd logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/XMLLayoutTest.java logging/log4j/log4j2/trunk/src/changes/changes.xml logging/log4j/log4j2/trunk/src/site/xdoc/manual/layouts.xml.vm Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XMLLayout.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XMLLayout.java?rev=1545905&r1=1545904&r2=1545905&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XMLLayout.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/XMLLayout.java Wed Nov 27 01:58:48 2013 @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.config.plugins.Plugin; import org.apache.logging.log4j.core.config.plugins.PluginAttribute; @@ -195,6 +196,28 @@ public class XMLLayout extends AbstractS buf.append(this.eol); } + if (event.getMarker() != null) { + final Marker marker = event.getMarker(); + buf.append(this.indent2); + buf.append('<'); + if (!complete) { + buf.append(this.namespacePrefix); + } + buf.append("Marker"); + final Marker parent = marker.getParent(); + if (parent != null) { + buf.append(" parent=\"").append(Transform.escapeHtmlTags(parent.getName())).append("\""); + } + buf.append('>'); + buf.append(Transform.escapeHtmlTags(marker.getName())); + buf.append(""); + buf.append(this.eol); + } + final Throwable throwable = event.getThrown(); if (throwable != null) { final List s = Throwables.toStringList(throwable); Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/resources/Log4j-events.dtd URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/resources/Log4j-events.dtd?rev=1545905&r1=1545904&r2=1545905&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/resources/Log4j-events.dtd (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/resources/Log4j-events.dtd Wed Nov 27 01:58:48 2013 @@ -28,6 +28,10 @@ + + @@ -39,7 +43,7 @@ - + + + + + + Modified: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/XMLLayoutTest.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/XMLLayoutTest.java?rev=1545905&r1=1545904&r2=1545905&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/XMLLayoutTest.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/XMLLayoutTest.java Wed Nov 27 01:58:48 2013 @@ -16,29 +16,32 @@ */ package org.apache.logging.log4j.core.layout; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.List; + import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.BasicConfigurationFactory; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.LoggerContext; -import org.apache.logging.log4j.test.appender.ListAppender; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.helpers.Charsets; +import org.apache.logging.log4j.test.appender.ListAppender; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - /** * */ public class XMLLayoutTest { private static final String body = ""; + private static final String markerTag = "EVENT"; static ConfigurationFactory cf = new BasicConfigurationFactory(); @AfterClass @@ -99,6 +102,9 @@ public class XMLLayoutTest { root.error("finished mdc pattern test", new NullPointerException("test")); + final Marker marker = MarkerManager.getMarker("EVENT"); + root.error(marker, "marker test"); + appender.stop(); final List list = appender.getMessages(); @@ -108,5 +114,8 @@ public class XMLLayoutTest { assertTrue("Incorrect header: " + string, string.equals("")); assertTrue("Incorrect footer", list.get(list.size() - 1).equals("")); assertTrue("Incorrect body. Expected " + body + " Actual: " + list.get(7), list.get(7).trim().equals(body)); + + assertTrue("Missing Marker-Tag, Expected "+markerTag+", Actual"+list.get(list.size() - 4), + list.get(list.size() - 4).contains(markerTag)); } } Modified: logging/log4j/log4j2/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/changes/changes.xml?rev=1545905&r1=1545904&r2=1545905&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/src/changes/changes.xml (original) +++ logging/log4j/log4j2/trunk/src/changes/changes.xml Wed Nov 27 01:58:48 2013 @@ -20,7 +20,10 @@ Changes - + + + XMLLayout does not include marker name. + Update Flume Appender to use Flume 1.4.0. Modified: logging/log4j/log4j2/trunk/src/site/xdoc/manual/layouts.xml.vm URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/src/site/xdoc/manual/layouts.xml.vm?rev=1545905&r1=1545904&r2=1545905&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/src/site/xdoc/manual/layouts.xml.vm (original) +++ logging/log4j/log4j2/trunk/src/site/xdoc/manual/layouts.xml.vm Wed Nov 27 01:58:48 2013 @@ -1309,7 +1309,7 @@ at org.apache.logging.log4j.core.pattern

- Appends a series of event elements as defined in the log4j.dtd. + Appends a series of Event elements as defined in the log4j.dtd.

Complete well-formed XML vs. fragment XML

@@ -1323,14 +1323,16 @@ at org.apache.logging.log4j.core.pattern A well-formed XML document follows this pattern:

<?xml version="1.0" encoding="UTF-8"?>
-<events xmlns="http://logging.apache.org/log4j/2.0/events">
-  <event logger="com.foo.Bar" timestamp="1373436580419" level="INFO" thread="main">
-    <message><![CDATA[This is a log message 1]]></message>
-  </event>
-  <event logger="com.foo.Baz" timestamp="1373436580420" level="INFO" thread="main">
-    <message><![CDATA[This is a log message 2]]></message>
-  </event>
-</events>
+<Events xmlns="http://logging.apache.org/log4j/2.0/events"> + <Event logger="com.foo.Bar" timestamp="1373436580419" level="INFO" thread="main"> + <Message><![CDATA[This is a log message 1]]></Message> + <Marker parent="Parent Marker"><Child Marker></Marker> + </Event> + <Event logger="com.foo.Baz" timestamp="1373436580420" level="INFO" thread="main"> + <Message><![CDATA[This is a log message 2]]></Message> + <Marker><The Marker Name></Marker> + </Event> +</Events>

If complete="false", the appender does not write the XML processing instruction and the root element. @@ -1338,6 +1340,12 @@ at org.apache.logging.log4j.core.pattern

This approach enforces the independence of the XMLLayout and the appender where you embed it.

+

Marker

+

Markers are represented by a Marker element within the Event element. + The Marker element appears only when a marker is used in the log message. The name of the marker's + parent will be provided in the parent attribute of the Marker element. + Only the leaf marker is included, not the full hierarchy. +

Encoding

Appenders using this layout should have their charset set to UTF-8 or