-1 to throw new RuntimeException(e)
Gary
On Jul 22, 2017 13:48, <[email protected]> wrote:
Repository: logging-log4j2
Updated Branches:
refs/heads/LOG4J2-1986 [created] c4814a873
LOG4J2-1986 Public API for parsing the output from
JsonLayout/XmlLayout/YamlLayout
into a LogEvent
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/
commit/c4814a87
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c4814a87
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c4814a87
Branch: refs/heads/LOG4J2-1986
Commit: c4814a8730eb24bdf89cf23c89b4a957b8418ba5
Parents: eea873e
Author: Mikael Ståldal <[email protected]>
Authored: Sat Jul 22 22:48:24 2017 +0200
Committer: Mikael Ståldal <[email protected]>
Committed: Sat Jul 22 22:48:24 2017 +0200
----------------------------------------------------------------------
.../parser/AbstractJacksonLogEventParser.java | 85 +++++++++++++++
.../log4j/core/parser/JsonLogEventParser.java | 32 ++++++
.../log4j/core/parser/LogEventParser.java | 64 ++++++++++++
.../log4j/core/parser/ParseException.java | 34 ++++++
.../log4j/core/parser/TextLogEventParser.java | 50 +++++++++
.../log4j/core/parser/XmlLogEventParser.java | 32 ++++++
.../log4j/core/parser/YamlLogEventParser.java | 33 ++++++
.../logging/log4j/core/parser/package-info.java | 20 ++++
.../core/parser/JsonLogEventParserTest.java | 103 +++++++++++++++++++
src/changes/changes.xml | 3 +
10 files changed, 456 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/
AbstractJacksonLogEventParser.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/
AbstractJacksonLogEventParser.java b/log4j-core/src/main/java/
org/apache/logging/log4j/core/parser/AbstractJacksonLogEventParser.java
new file mode 100644
index 0000000..8b00e57
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/
AbstractJacksonLogEventParser.java
@@ -0,0 +1,85 @@
+/*
+ * 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.parser;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectReader;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.jackson.Log4jJsonObjectMapper;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+
+class AbstractJacksonLogEventParser implements TextLogEventParser {
+ final ObjectReader objectReader;
+
+ AbstractJacksonLogEventParser(ObjectReader objectReader) {
+ this.objectReader = objectReader;
+ }
+
+ @Override
+ public LogEvent parseFrom(InputStream input) throws IOException,
ParseException {
+ try {
+ return objectReader.readValue(input);
+ } catch (JsonProcessingException e) {
+ throw new ParseException(e);
+ }
+ }
+
+ @Override
+ public LogEvent parseFrom(Reader input) throws IOException,
ParseException {
+ try {
+ return objectReader.readValue(input);
+ } catch (JsonProcessingException e) {
+ throw new ParseException(e);
+ }
+ }
+
+ @Override
+ public LogEvent parseFrom(String input) throws ParseException {
+ try {
+ return objectReader.readValue(input);
+ } catch (JsonProcessingException e) {
+ throw new ParseException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public LogEvent parseFrom(byte[] input) throws ParseException {
+ try {
+ return objectReader.readValue(input);
+ } catch (JsonProcessingException e) {
+ throw new ParseException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public LogEvent parseFrom(byte[] input, int offset, int length) throws
ParseException {
+ try {
+ return objectReader.readValue(input, offset, length);
+ } catch (JsonProcessingException e) {
+ throw new ParseException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/
JsonLogEventParser.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/JsonLogEventParser.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/JsonLogEventParser.java
new file mode 100644
index 0000000..218de0b
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/JsonLogEventParser.java
@@ -0,0 +1,32 @@
+/*
+ * 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.parser;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.jackson.Log4jJsonObjectMapper;
+
+/**
+ * Parse the output from JsonLayout layout into instances of {@link
LogEvent}.
+ */
+public class JsonLogEventParser extends AbstractJacksonLogEventParser {
+
+ public JsonLogEventParser() {
+ super(new Log4jJsonObjectMapper().readerFor(Log4jLogEvent.class));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/
core/parser/LogEventParser.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/LogEventParser.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/LogEventParser.java
new file mode 100644
index 0000000..88e84fb
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/LogEventParser.java
@@ -0,0 +1,64 @@
+/*
+ * 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.parser;
+
+import org.apache.logging.log4j.core.LogEvent;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Parse the output from a layout into instances of {@link LogEvent}.
+ */
+public interface LogEventParser {
+
+ /**
+ * Parse from an InputStream. The input stream may contain multiple
log events.
+ * This method will read one log event and leave the stream open and
positioned to read the
+ * next log event.
+ *
+ * @param input the input stream
+ *
+ * @return the parsed LogEvent, or {@literal null} of end of input is
reached.
+ * @throws IOException if unable to read from the input
+ * @throws ParseException if the input is malformed and cannot be
parsed as a LogEvent
+ */
+ LogEvent parseFrom(InputStream input) throws IOException,
ParseException;
+
+ /**
+ * Parse from a byte array, which is expected to contain exactly one
log event.
+ *
+ * @param input the byte array
+ *
+ * @return the parsed LogEvent, never {@literal null}.
+ * @throws ParseException if the input is malformed and cannot be
parsed as a LogEvent
+ */
+ LogEvent parseFrom(byte[] input) throws ParseException;
+
+ /**
+ * Parse from a specified range of a byte array. The specified range
is expected to contain
+ * exactly one log event.
+ *
+ * @param input the byte array
+ * @param offset the initial offset
+ * @param length the length
+ *
+ * @return the parsed LogEvent, never {@literal null}.
+ * @throws ParseException if the input is malformed and cannot be
parsed as a LogEvent
+ */
+ LogEvent parseFrom(byte[] input, int offset, int length) throws
ParseException;
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/
core/parser/ParseException.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/ParseException.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/ParseException.java
new file mode 100644
index 0000000..8f5fa54
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/ParseException.java
@@ -0,0 +1,34 @@
+/*
+ * 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.parser;
+
+/**
+ * Thrown when the input cannot be parsed.
+ */
+public class ParseException extends Exception {
+ public ParseException(String message) {
+ super(message);
+ }
+
+ public ParseException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ParseException(Throwable cause) {
+ super(cause);
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/
TextLogEventParser.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/TextLogEventParser.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/TextLogEventParser.java
new file mode 100644
index 0000000..3428024
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/TextLogEventParser.java
@@ -0,0 +1,50 @@
+/*
+ * 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.parser;
+
+import org.apache.logging.log4j.core.LogEvent;
+
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * Parse the output from a text based layout into instances of {@link
LogEvent}.
+ */
+public interface TextLogEventParser extends LogEventParser {
+ /**
+ * Parse from a Reader. The reader may contain multiple log events.
+ * This method will read one log event and leave the reader open and
positioned to read the
+ * next log event.
+ *
+ * @param input the reader
+ *
+ * @return the parsed LogEvent, or {@literal null} of end of input is
reached.
+ * @throws IOException if unable to read from the input
+ * @throws ParseException if the input is malformed and cannot be
parsed as a LogEvent
+ */
+ LogEvent parseFrom(Reader input) throws IOException, ParseException;
+
+ /**
+ * Parse from a String, which is expected to contain exactly one log
event.
+ *
+ * @param input the string
+ *
+ * @return the parsed LogEvent
+ * @throws ParseException if the input is malformed and cannot be
parsed as a LogEvent
+ */
+ LogEvent parseFrom(String input) throws ParseException;
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/
core/parser/XmlLogEventParser.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/XmlLogEventParser.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/XmlLogEventParser.java
new file mode 100644
index 0000000..597e70b
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/XmlLogEventParser.java
@@ -0,0 +1,32 @@
+/*
+ * 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.parser;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.jackson.Log4jXmlObjectMapper;
+
+/**
+ * Parse the output from XmlLayout layout into instances of {@link
LogEvent}.
+ */
+public class XmlLogEventParser extends AbstractJacksonLogEventParser {
+
+ public XmlLogEventParser() {
+ super(new Log4jXmlObjectMapper().readerFor(Log4jLogEvent.class));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/
YamlLogEventParser.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/YamlLogEventParser.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/YamlLogEventParser.java
new file mode 100644
index 0000000..59b3463
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/YamlLogEventParser.java
@@ -0,0 +1,33 @@
+/*
+ * 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.parser;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.jackson.Log4jXmlObjectMapper;
+import org.apache.logging.log4j.core.jackson.Log4jYamlObjectMapper;
+
+/**
+ * Parse the output from YamlLayout layout into instances of {@link
LogEvent}.
+ */
+public class YamlLogEventParser extends AbstractJacksonLogEventParser {
+
+ public YamlLogEventParser() {
+ super(new Log4jYamlObjectMapper().readerFor(Log4jLogEvent.class));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/main/java/org/apache/logging/log4j/
core/parser/package-info.java
----------------------------------------------------------------------
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/parser/package-info.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/package-info.java
new file mode 100644
index 0000000..3506570
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
parser/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+/**
+ * Parsers for the output of various layouts.
+ */
+package org.apache.logging.log4j.core.parser;
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/log4j-core/src/test/java/org/apache/logging/log4j/core/parser/
JsonLogEventParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/
parser/JsonLogEventParserTest.java b/log4j-core/src/test/java/
org/apache/logging/log4j/core/parser/JsonLogEventParserTest.java
new file mode 100644
index 0000000..5684602
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/
parser/JsonLogEventParserTest.java
@@ -0,0 +1,103 @@
+/*
+ * 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.parser;
+
+import org.apache.logging.log4j.core.LogEvent;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class JsonLogEventParserTest {
+
+ private JsonLogEventParser parser;
+
+ private static final String JSON = "{\n" +
+ " \"timeMillis\" : 1493121664118,\n" +
+ " \"thread\" : \"main\",\n" +
+ " \"level\" : \"INFO\",\n" +
+ " \"loggerName\" : \"HelloWorld\",\n" +
+ " \"marker\" : {\n" +
+ " \"name\" : \"child\",\n" +
+ " \"parents\" : [ {\n" +
+ " \"name\" : \"parent\",\n" +
+ " \"parents\" : [ {\n" +
+ " \"name\" : \"grandparent\"\n" +
+ " } ]\n" +
+ " } ]\n" +
+ " },\n" +
+ " \"message\" : \"Hello, world!\",\n" +
+ " \"thrown\" : {\n" +
+ " \"commonElementCount\" : 0,\n" +
+ " \"name\" : \"java.lang.RuntimeException\",\n" +
+ " \"extendedStackTrace\" : [ {\n" +
+ " \"class\" : \"logtest.Main\",\n" +
+ " \"method\" : \"main\",\n" +
+ " \"file\" : \"Main.java\",\n" +
+ " \"line\" : 29,\n" +
+ " \"exact\" : true,\n" +
+ " \"location\" : \"classes/\",\n" +
+ " \"version\" : \"?\"\n" +
+ " } ]\n" +
+ " },\n" +
+ " \"contextStack\" : [ \"one\", \"two\" ],\n" +
+ " \"endOfBatch\" : false,\n" +
+ " \"loggerFqcn\" :
\"org.apache.logging.log4j.spi.AbstractLogger\",\n"
+
+ " \"contextMap\" : {\n" +
+ " \"bar\" : \"BAR\",\n" +
+ " \"foo\" : \"FOO\"\n" +
+ " },\n" +
+ " \"threadId\" : 1,\n" +
+ " \"threadPriority\" : 5,\n" +
+ " \"source\" : {\n" +
+ " \"class\" : \"logtest.Main\",\n" +
+ " \"method\" : \"main\",\n" +
+ " \"file\" : \"Main.java\",\n" +
+ " \"line\" : 29\n" +
+ " }\n" +
+ "}";
+
+ @Before
+ public void setup() {
+ parser = new JsonLogEventParser();
+ }
+
+ @Test
+ public void testString() throws ParseException {
+ LogEvent logEvent = parser.parseFrom(JSON);
+ assertNotNull(logEvent);
+ assertEquals("HelloWorld", logEvent.getLoggerName());
+ // TODO assert more here
+ }
+
+ @Test(expected = ParseException.class)
+ public void testStringEmpty() throws ParseException {
+ parser.parseFrom("");
+ }
+
+ @Test(expected = ParseException.class)
+ public void testStringInvalidJson() throws ParseException {
+ parser.parseFrom("foobar");
+ }
+
+ @Test(expected = ParseException.class)
+ public void testStringInvalidProperty() throws ParseException {
+ parser.parseFrom("{\"foo\":\"bar\"}");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
c4814a87/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 074e31c..522f49b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -31,6 +31,9 @@
- "remove" - Removed
-->
<release version="2.9.0" date="2017-MM-DD" description="GA Release
2.9.0">
+ <action issue="LOG4J2-1986" dev="mikes" type="add">
+ Public API for parsing the output from JsonLayout/XmlLayout/YamlLayout
into a LogEvent.
+ </action>
<action issue="LOG4J2-1984" dev="rgoers" type="update">
Allow maxLength of StructuredData to be specified by the user.
</action>