Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-3298

Update JSONTemplateFormat to support not escaping certain payloads

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Not A Problem
    • None
    • None
    • JsonTemplateLayout
    • None

    Description

      Currently, if a user's object is able to generate well-formed JSON string, it will be escaped. It would be great if there was a way to config the JsonTemplateLayout to not escape certain payloads. This allows the json to be fully formed and contain model object data that can be parsed out later without any un-formatting.

      Example log entry:

      {"@timestamp":"2022-01-07T19:14:01.060Z","log.level":"INFO","message":"{ \"Order\" { \"id\": \"3977\", \"customerName\": \"Customer-8625\", \"createdDate\": \"2022-01-07T09:51:01.056580-06:00\"} }","process.thread.name":"main","log.logger":"io.foo.log.ProcessService"}
      

      Desired output:

      {"@timestamp":"2022-01-07T19:14:01.060Z","log.level":"INFO","message":{ "Order" { "id": "3977", "customerName": "Customer-8625", "createdDate": "2022-01-07T09:51:01.056580-06:00"} },"process.thread.name":"main","log.logger":"io.foo.log.ProcessService"}
      

      Proposed requirements:
      1. Users would have to pre-escape their JSON string in order to not break overall log json format

      Implementation approach options:
      1. Update JSONTemplate configuration to allow a rawJSON, similar to 'stringified'
      2. Data is written down as a JSON object "message": { }
      3. User should invoke using an ObjectMessage (or perhaps a JSONFormatMessage?): logger.info(new ObjectMessage(objectInstance))

      "message": {
          "$resolver": "message",
          "rawJSON": true
        },
      

      Attachments

        Activity

          People

            vy Volkan Yazici
            mattrpav Matt Pavlovich
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: