You already declare and throw ParseException, so I would use ParseException.
Gary On Sun, Jul 23, 2017 at 11:25 AM, Mikael Ståldal <[email protected]> wrote: > Do you have another suggestion? > > > On 2017-07-23 05:01, Gary Gregory wrote: > >> -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/par >> ser/ >> 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/par >> ser/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().reader >> For(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/par >> ser/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/par >> ser/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/par >> ser/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/par >> ser/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().readerF >> or(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/par >> ser/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().reader >> For(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/par >> ser/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> >> >> >
