This is an automated email from the ASF dual-hosted git repository. vy pushed a commit to branch release-2.x in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit f1110ccce1f37de0599952e5ed6bff0bb9983129 Author: Volkan Yazıcı <[email protected]> AuthorDate: Wed Feb 3 10:33:40 2021 +0100 LOG4J2-2973 Minor tweaks to previous work. --- log4j-layout-template-json/revapi.json | 15 ++++ ...mplateLayoutAdditionalFieldPropertiesTest.java} | 6 +- ...nTemplateLayoutAdditionalFieldTestHelpers.java} | 28 +++++++- ... JsonTemplateLayoutAdditionalFieldXmlTest.java} | 7 +- ...JsonTemplateLayoutAdditionalFieldYamlTest.java} | 6 +- ...eldEnrichedJsonTemplateLayoutLogging.properties | 33 ++++----- ...onalFieldEnrichedJsonTemplateLayoutLogging.yaml | 6 +- .../asciidoc/manual/json-template-layout.vm.adoc | 84 ++++++++++++++-------- 8 files changed, 125 insertions(+), 60 deletions(-) diff --git a/log4j-layout-template-json/revapi.json b/log4j-layout-template-json/revapi.json index 77f8cde..6f6096d 100644 --- a/log4j-layout-template-json/revapi.json +++ b/log4j-layout-template-json/revapi.json @@ -434,6 +434,21 @@ "old": "class org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter", "new": "class org.apache.logging.log4j.layout.template.json.util.TruncatingBufferedWriter", "justification": "LOG4J2-2993 Massaged (internal) API to make method names more Java-like and restrict access if possible." + }, + { + "code": "java.method.removed", + "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Builder org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Builder::setType(org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type)", + "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format." + }, + { + "code": "java.class.removed", + "old": "enum org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type", + "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format." + }, + { + "code": "java.method.removed", + "old": "method org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField.Type org.apache.logging.log4j.layout.template.json.JsonTemplateLayout.EventTemplateAdditionalField::getType()", + "justification": "LOG4J2-2973 Rename EventTemplateAdditionalField#type (conflicting with properties file parser) to #format." } ] } diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestProperties.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldPropertiesTest.java similarity index 88% rename from log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestProperties.java rename to log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldPropertiesTest.java index 5c3911e..735a55d 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestProperties.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldPropertiesTest.java @@ -23,12 +23,14 @@ import org.apache.logging.log4j.test.appender.ListAppender; import org.junit.jupiter.api.Test; @LoggerContextSource("additionalFieldEnrichedJsonTemplateLayoutLogging.properties") -class JsonTemplateLayoutAdditionalFieldTestProperties { +class JsonTemplateLayoutAdditionalFieldPropertiesTest { @Test void test_additional_fields_are_resolved( final LoggerContext loggerContext, final @Named(value = "List") ListAppender appender) { - JsonTemplateLayoutAdditionalFieldTestHelper.assertAdditionalFields(loggerContext, appender); + JsonTemplateLayoutAdditionalFieldTestHelpers + .assertAdditionalFields(loggerContext, appender); } + } diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestHelper.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestHelpers.java similarity index 62% rename from log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestHelper.java rename to log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestHelpers.java index 605cc3a..383206c 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestHelper.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestHelpers.java @@ -1,3 +1,19 @@ +/* + * 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.layout.template.json; import org.apache.logging.log4j.Logger; @@ -11,13 +27,18 @@ import java.util.Collections; import java.util.List; import java.util.Map; -class JsonTemplateLayoutAdditionalFieldTestHelper { +final class JsonTemplateLayoutAdditionalFieldTestHelpers { + + private JsonTemplateLayoutAdditionalFieldTestHelpers() {} + + static void assertAdditionalFields( + final LoggerContext loggerContext, + final ListAppender appender) { - static void assertAdditionalFields(final LoggerContext loggerContext, ListAppender appender) { // Log an event. final Logger logger = loggerContext.getLogger( - JsonTemplateLayoutAdditionalFieldTestHelper.class); + JsonTemplateLayoutAdditionalFieldTestHelpers.class); logger.info("trigger"); // Verify that the appender has logged the event. @@ -44,4 +65,5 @@ class JsonTemplateLayoutAdditionalFieldTestHelper { .containsEntry("listField", Arrays.asList(1, "two")); } + } diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestXML.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldXmlTest.java similarity index 88% rename from log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestXML.java rename to log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldXmlTest.java index d96da36..f9194ee 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestXML.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldXmlTest.java @@ -23,11 +23,14 @@ import org.apache.logging.log4j.test.appender.ListAppender; import org.junit.jupiter.api.Test; @LoggerContextSource("additionalFieldEnrichedJsonTemplateLayoutLogging.xml") -class JsonTemplateLayoutAdditionalFieldTestXML { +class JsonTemplateLayoutAdditionalFieldXmlTest { + @Test void test_additional_fields_are_resolved( final LoggerContext loggerContext, final @Named(value = "List") ListAppender appender) { - JsonTemplateLayoutAdditionalFieldTestHelper.assertAdditionalFields(loggerContext, appender); + JsonTemplateLayoutAdditionalFieldTestHelpers + .assertAdditionalFields(loggerContext, appender); } + } diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestYAML.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldYamlTest.java similarity index 88% rename from log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestYAML.java rename to log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldYamlTest.java index 204ead8..feecefb 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldTestYAML.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutAdditionalFieldYamlTest.java @@ -23,12 +23,14 @@ import org.apache.logging.log4j.test.appender.ListAppender; import org.junit.jupiter.api.Test; @LoggerContextSource("additionalFieldEnrichedJsonTemplateLayoutLogging.yaml") -class JsonTemplateLayoutAdditionalFieldTestYAML { +class JsonTemplateLayoutAdditionalFieldYamlTest { @Test void test_additional_fields_are_resolved( final LoggerContext loggerContext, final @Named(value = "List") ListAppender appender) { - JsonTemplateLayoutAdditionalFieldTestHelper.assertAdditionalFields(loggerContext, appender); + JsonTemplateLayoutAdditionalFieldTestHelpers + .assertAdditionalFields(loggerContext, appender); } + } diff --git a/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.properties b/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.properties index 58e65ba..64bde5f 100644 --- a/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.properties +++ b/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.properties @@ -17,24 +17,21 @@ appender.list.name = List appender.list.type = List appender.list.raw = true appender.list.layout.type = JsonTemplateLayout -appender.list.layout.charset = UTF-8 -appender.list.layout.extra[0].key = stringField -appender.list.layout.extra[0].value = string -appender.list.layout.extra[0].type = EventTemplateAdditionalField -appender.list.layout.extra[0].format = STRING -appender.list.layout.extra[1].key = numberField -appender.list.layout.extra[1].value = 1 -appender.list.layout.extra[1].format = JSON -appender.list.layout.extra[1].type = EventTemplateAdditionalField -appender.list.layout.extra[2].key = objectField -appender.list.layout.extra[2].value = {"numberField":1} -appender.list.layout.extra[2].format = JSON -appender.list.layout.extra[2].type = EventTemplateAdditionalField -appender.list.layout.extra[3].key = listField -appender.list.layout.extra[3].value = [1, "two"] -appender.list.layout.extra[3].format = JSON -appender.list.layout.extra[3].type = EventTemplateAdditionalField +appender.list.layout.eventTemplateAdditionalField[0].type = EventTemplateAdditionalField +appender.list.layout.eventTemplateAdditionalField[0].key = stringField +appender.list.layout.eventTemplateAdditionalField[0].value = string +appender.list.layout.eventTemplateAdditionalField[1].type = EventTemplateAdditionalField +appender.list.layout.eventTemplateAdditionalField[1].key = numberField +appender.list.layout.eventTemplateAdditionalField[1].value = 1 +appender.list.layout.eventTemplateAdditionalField[1].format = JSON +appender.list.layout.eventTemplateAdditionalField[2].type = EventTemplateAdditionalField +appender.list.layout.eventTemplateAdditionalField[2].key = objectField +appender.list.layout.eventTemplateAdditionalField[2].value = {"numberField":1} +appender.list.layout.eventTemplateAdditionalField[2].format = JSON +appender.list.layout.eventTemplateAdditionalField[3].type = EventTemplateAdditionalField +appender.list.layout.eventTemplateAdditionalField[3].key = listField +appender.list.layout.eventTemplateAdditionalField[3].value = [1, "two"] +appender.list.layout.eventTemplateAdditionalField[3].format = JSON rootLogger.level = info rootLogger.appenderRef.stdout.ref = List - diff --git a/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.yaml b/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.yaml index 676b3ce..58a2bd9 100644 --- a/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.yaml +++ b/log4j-layout-template-json/src/test/resources/additionalFieldEnrichedJsonTemplateLayoutLogging.yaml @@ -14,13 +14,13 @@ # limitations under the License. Configuration: - status: OFF + status: "OFF" appenders: List: name: "List" raw: "true" JsonTemplateLayout: - EventTemplateadditionalField: + eventTemplateAdditionalField: - key: "stringField" value: "string" - key: "numberField" @@ -36,4 +36,4 @@ Configuration: root: level: "trace" AppenderRef: - ref: List + ref: "List" diff --git a/src/site/asciidoc/manual/json-template-layout.vm.adoc b/src/site/asciidoc/manual/json-template-layout.vm.adoc index d3f700c..4575259 100644 --- a/src/site/asciidoc/manual/json-template-layout.vm.adoc +++ b/src/site/asciidoc/manual/json-template-layout.vm.adoc @@ -242,11 +242,12 @@ appender.console.json.eventTemplateUri = classpath:LogstashJsonEventLayoutV1.jso [#additional-event-template-fields] === Additonal event template fields -Additional event template field is a convenient short-cut to add custom fields -to a template or override the fields of a template. Following configuration -overrides the `host` field of the `GelfLayout.json` template and adds two new -custom fields: +Additional event template fields are a convenient short-cut to add custom fields +to a template or override the existing ones. Following configuration overrides +the `host` field of the `GelfLayout.json` template and adds two new custom +fields: +.XML configuration with additional fields [source,xml] ---- <JsonTemplateLayout eventTemplateUri="classpath:GelfLayout.json"> @@ -257,40 +258,63 @@ custom fields: ---- The default `format` for the added new fields are `String`. -One can also pass JSON literals into additional fields: +One can also provide JSON-formatted additional fields: +.XML-formatted configuration with JSON-formatted additional fields [source,xml] ---- -<EventTemplateAdditionalField - key="marker" - format="JSON" - value='{"$resolver": "marker", "field": "name"}'/> -<EventTemplateAdditionalField - key="aNumber" - format="JSON" - value="1"/> -<EventTemplateAdditionalField - key="aList" - format="JSON" - value='[1,2,"string"]'/> +<JsonTemplateLayout eventTemplateUri="classpath:GelfLayout.json"> + <EventTemplateAdditionalField + key="marker" + format="JSON" + value='{"$resolver": "marker", "field": "name"}'/> + <EventTemplateAdditionalField + key="aNumber" + format="JSON" + value="1"/> + <EventTemplateAdditionalField + key="aList" + format="JSON" + value='[1, 2, "three"]'/> +</JsonTemplateLayout> ---- -When using a configuration file with a `.properties` extension, additional fields can be added as follows: +Additional event template fields can also be introduced using properties- and +YAML-formatted configuration: +.Properties-formatted configuration with JSON-formatted additional fields [source, properties] ---- -appender.console.layout.extra[0].key = marker -appender.console.layout.extra[0].value = {"$resolver": "marker", "field": "name"} -appender.console.layout.extra[0].format = JSON -appender.console.layout.extra[0].type = EventTemplateAdditionalField -appender.console.layout.extra[1].key = aNumber -appender.console.layout.extra[1].value = 1 -appender.console.layout.extra[1].format = JSON -appender.console.layout.extra[1].type = EventTemplateAdditionalField -appender.console.layout.extra[2].key = aList -appender.console.layout.extra[2].value = [1,2,"string"] -appender.console.layout.extra[2].format = JSON -appender.console.layout.extra[2].type = EventTemplateAdditionalField +appender.console.layout.type = JsonTemplateLayout +appender.console.layout.eventTemplateUri = classpath:GelfLayout.json +appender.console.layout.eventTemplateAdditionalField[0].type = EventTemplateAdditionalField +appender.console.layout.eventTemplateAdditionalField[0].key = marker +appender.console.layout.eventTemplateAdditionalField[0].value = {"$resolver": "marker", "field": "name"} +appender.console.layout.eventTemplateAdditionalField[0].format = JSON +appender.console.layout.eventTemplateAdditionalField[1].type = EventTemplateAdditionalField +appender.console.layout.eventTemplateAdditionalField[1].key = aNumber +appender.console.layout.eventTemplateAdditionalField[1].value = 1 +appender.console.layout.eventTemplateAdditionalField[1].format = JSON +appender.console.layout.eventTemplateAdditionalField[2].type = EventTemplateAdditionalField +appender.console.layout.eventTemplateAdditionalField[2].key = aList +appender.console.layout.eventTemplateAdditionalField[2].value = [1, 2, "three"] +appender.console.layout.eventTemplateAdditionalField[2].format = JSON +---- + +.YAML-formatted configuration with JSON-formatted additional fields +[source,yaml] +---- +JsonTemplateLayout: + eventTemplateAdditionalField: + - key: "marker" + value: '{"$resolver": "marker", "field": "name"}' + format: "JSON" + - key: "aNumber" + value: "1" + format: "JSON" + - key: "aList" + value: '[1, 2, "three"]' + format: "JSON" ---- [#recycling-strategy]
