Repository: logging-log4j2 Updated Branches: refs/heads/master d94555567 -> 57cedf0b6
LOG4J2-1144 Add %markerSimpleName in pattern layout should evaluate to marker name (not toString()). Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/57cedf0b Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/57cedf0b Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/57cedf0b Branch: refs/heads/master Commit: 57cedf0b64291a15b32d4c2f51d398ed6a74d2d5 Parents: d945555 Author: ggregory <[email protected]> Authored: Thu Oct 1 11:32:41 2015 -0700 Committer: ggregory <[email protected]> Committed: Thu Oct 1 11:32:41 2015 -0700 ---------------------------------------------------------------------- .../MarkerSimpleNamePatternConverter.java | 58 ++++++++++++++++++++ .../MarkerSimpleNamePatternConverterTest.java | 47 ++++++++++++++++ src/changes/changes.xml | 3 + src/site/xdoc/manual/layouts.xml.vm | 8 ++- 4 files changed, 115 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/57cedf0b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java new file mode 100644 index 0000000..525641c --- /dev/null +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverter.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache license, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the license for the specific language governing permissions and + * limitations under the license. + */ +package org.apache.logging.log4j.core.pattern; + +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.config.plugins.Plugin; + +/** + * Appends an event's maker name to a StringBuilder. + */ +@Plugin(name = "MarkerNamePatternConverter", category = PatternConverter.CATEGORY) +@ConverterKeys({ "markerSimpleName" }) +public final class MarkerSimpleNamePatternConverter extends LogEventPatternConverter { + + /** + * Private constructor. + * @param options options, may be null. + */ + private MarkerSimpleNamePatternConverter(final String[] options) { + super("MarkerSimpleName", "markerSimpleName"); + } + + /** + * Obtains an instance of pattern converter. + * + * @param options options, may be null. + * @return instance of pattern converter. + */ + public static MarkerSimpleNamePatternConverter newInstance(final String[] options) { + return new MarkerSimpleNamePatternConverter(options); + } + + /** + * {@inheritDoc} + */ + @Override + public void format(final LogEvent event, final StringBuilder toAppendTo) { + final Marker marker = event.getMarker(); + if (marker != null) { + toAppendTo.append(marker.getName()); + } + } +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/57cedf0b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java new file mode 100644 index 0000000..1f90506 --- /dev/null +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerSimpleNamePatternConverterTest.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache license, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the license for the specific language governing permissions and + * limitations under the license. + */ +package org.apache.logging.log4j.core.pattern; + +import static org.junit.Assert.assertEquals; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.impl.Log4jLogEvent; +import org.apache.logging.log4j.message.Message; +import org.apache.logging.log4j.message.StructuredDataMessage; +import org.junit.Test; + +/** + * Tests {@link MarkerSimpleNamePatternConverter}. + */ +public class MarkerSimpleNamePatternConverterTest { + + @Test + public void testLookup() { + final Message msg = new StructuredDataMessage("Test", "This is a test", "Audit"); + final Marker eventMarker = MarkerManager.getMarker("EVENT"); + final Marker auditMarker = MarkerManager.getMarker("AUDIT").setParents(eventMarker); + final LogEvent event = Log4jLogEvent.newBuilder().setLoggerName("MyLogger").setMarker(auditMarker) + .setLevel(Level.DEBUG).setMessage(msg).build(); + final StringBuilder sb = new StringBuilder(); + final MarkerSimpleNamePatternConverter converter = MarkerSimpleNamePatternConverter.newInstance(null); + converter.format(event, sb); + assertEquals(auditMarker.getName(), sb.toString()); + } +} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/57cedf0b/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 65ea817..4edde4c 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -39,6 +39,9 @@ <action issue="LOG4J2-1132" dev="ggregory" type="fix"> Do not use MongoDB driver 2.13.3 deprecated methods. </action> + <action issue="LOG4J2-1144" dev="ggregory" type="fix"> + Add %markerSimpleName in pattern layout should evaluate to marker name (not toString()). + </action> <action issue="LOG4J2-1040" dev="ggregory" type="update"> Update MongoDB driver from 2.13.3 to 3.0.4. </action> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/57cedf0b/src/site/xdoc/manual/layouts.xml.vm ---------------------------------------------------------------------- diff --git a/src/site/xdoc/manual/layouts.xml.vm b/src/site/xdoc/manual/layouts.xml.vm index 15bfcb8..786996e 100644 --- a/src/site/xdoc/manual/layouts.xml.vm +++ b/src/site/xdoc/manual/layouts.xml.vm @@ -958,7 +958,13 @@ WARN [main]: Message 2</pre> <td align="center"> <b>marker</b> </td> - <td>The name of the marker, if one is present.</td> + <td>The full name of the marker, including parents, if one is present.</td> + </tr> + <tr> + <td align="center"> + <b>markerSimpleName</b> + </td> + <td>The simple name of the marker (not including parents), if one is present.</td> </tr> <tr> <td align="center">
