Note that if we add such option to JsonLayout, then all log messages passed to that layout need to be well-formed JSON, otherwise the output will not be well-formed JSON. We would make it easy for the user to shoot himself in the foot.

I think it would be better to create a new subclass of Message, JsonMessage, and let JsonLayout handle such messages specially and output as a nested JSON structure (instead as a quoted and escaped string as today).

However, how do we represent a JSON structure without adding dependency on Jackson or other 3rd party JSON library? Message subcasses are in log4j-api, and we do not want log4j-api to depend on any such library. Or maybe we should put this new JsonMessage in log4j-core? Or maybe put it in a new log4j-json module?

Should we also have XmlMessage for XmlLayout?

What about YamlLayout?

On 2017-08-11 16:56, Gary Gregory wrote:

The JSON layout outputs the log event in JSON, the event message is just a
string in that event, in this case, it is escaped following the JSON rules
to remain a string.

If you want a JSON object back out of the event message you will have to
parse it out of that string.

Feel free to provide a PR on GitHub if you want to add an option to allow
for a JSON object as the log message. I am not sure if it would be accepted
though as it is quite different from the current design.

Thoughts from the community?


On Aug 11, 2017 07:53, "Jeus Geek" <> wrote:

i will show JSON object as a JSON object in log4j2 when is that configed
JSONLayout .

JSON object:

{"line_id": 12,"play_name":"Jeus"}

import org.apache.logging.log4j.LogManager;import
public class Main {

        private static final Logger LOGGER = LogManager.getLogger(Main.

        public static void main(String[] args) {

             String message = "{\"line_id\": 12,\"play_name\": \"Jeus\"}";


output is:

  "message":"{\"line_id\": 12,\"play_name\": \"Jeus\"}",


but i will show message as a json object same this:

  "message":{"line_id": 12,"play_name":"Jeus"},

you can see more detail about my problem in stackOverflow

thank you for attention

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to