[
https://issues.apache.org/jira/browse/LOG4J2-2873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alla Gofman updated LOG4J2-2873:
--------------------------------
Description:
I create LogEvent where message is of type MapMessage (key-value pairs).
I send this log even to SocketAppender by JsonLayout.
The json created :
{quote}{"instant":\{"epochSecond":1592431380,"nanoOfSecond":11953900},"thread":"MetricsScheduler-1","level":"alert","loggerName":"com.bmc.ctm.saas.alerts.AlertsLogger","message":"alertmsg=\"MFT
Server isn't responding!\" component=\"mft-server\" id=\"DRAFT_101\"
key1=\"value1\"","endOfBatch":false,"loggerFqcn":"com.bmc.ctm.saas.alerts.AlertsLoggerWrapper","contextMap":{},"threadId":18,"threadPriority":5}{quote}
I tried also setObjectMessageAsJsonObject(true) - same result.
On ServerSocket side I want to parse/deserialize this json string to LogEvent
and log it to File Appender:
{quote}{{PatternLayout. JSONObject jobj = new JSONObject(line);}}
{{LogEvent logEvent = new JsonLogEventParser().parseFrom(line);}}
{quote}
Then parseFrom() build the LogEvent, message object create of type
SimpleMessage and not MapMessage. Then it comes to resolving *%map* pattern in
MapPatternConverter.format() - do nothing and return.
{quote}public void format(final LogEvent event, final StringBuilder toAppendTo)
Unknown macro: \{ MapMessage msg; if (event.getMessage() instanceof
MapMessage) Unknown macro}
else
Unknown macro: \{ return; }
{quote}
was:
I create LogEvent where message is of type MapMessage (key-value pairs).
I send this log even to SocketAppender by JsonLayout.
The json created :
{quote}{"instant":\{"epochSecond":1592431380,"nanoOfSecond":11953900},"thread":"MetricsScheduler-1","level":"alert","loggerName":"AlertsLogger","message":"alertmsg=\"MFT
Server isn't responding!\" component=\"server\" id=\"DRAFT_101\"
key1=\"value1\"","endOfBatch":false,"loggerFqcn":"com.*.*.saas.alerts.AlertsLoggerWrapper","contextMap":{},"threadId":18,"threadPriority":5}
{quote}
I tried also setObjectMessageAsJsonObject(true) - same result.
On ServerSocket side I want to parse/deserialize this json string to LogEvent
and log it to File Appender:
{quote}{{PatternLayout. JSONObject jobj = new JSONObject(line);}}
{{LogEvent logEvent = new JsonLogEventParser().parseFrom(line);}}
{quote}
Then parseFrom() build the LogEvent, message object create of type
SimpleMessage and not MapMessage. Then it comes to resolving *%map* pattern in
MapPatternConverter.format() - do nothing and return.
{quote}public void format(final LogEvent event, final StringBuilder toAppendTo)
Unknown macro: \{ MapMessage msg; if (event.getMessage() instanceof
MapMessage) Unknown macro}
else
Unknown macro: \{ return; }
{quote}
> Failed to parse json string to LogEvent when massage type is MapMessage
> -----------------------------------------------------------------------
>
> Key: LOG4J2-2873
> URL: https://issues.apache.org/jira/browse/LOG4J2-2873
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.13.2, 2.13.3
> Reporter: Alla Gofman
> Priority: Major
>
> I create LogEvent where message is of type MapMessage (key-value pairs).
> I send this log even to SocketAppender by JsonLayout.
> The json created :
> {quote}{"instant":\{"epochSecond":1592431380,"nanoOfSecond":11953900},"thread":"MetricsScheduler-1","level":"alert","loggerName":"com.bmc.ctm.saas.alerts.AlertsLogger","message":"alertmsg=\"MFT
> Server isn't responding!\" component=\"mft-server\" id=\"DRAFT_101\"
> key1=\"value1\"","endOfBatch":false,"loggerFqcn":"com.bmc.ctm.saas.alerts.AlertsLoggerWrapper","contextMap":{},"threadId":18,"threadPriority":5}{quote}
> I tried also setObjectMessageAsJsonObject(true) - same result.
> On ServerSocket side I want to parse/deserialize this json string to
> LogEvent and log it to File Appender:
> {quote}{{PatternLayout. JSONObject jobj = new JSONObject(line);}}
> {{LogEvent logEvent = new JsonLogEventParser().parseFrom(line);}}
> {quote}
>
> Then parseFrom() build the LogEvent, message object create of type
> SimpleMessage and not MapMessage. Then it comes to resolving *%map* pattern
> in MapPatternConverter.format() - do nothing and return.
> {quote}public void format(final LogEvent event, final StringBuilder
> toAppendTo)
> Unknown macro: \{ MapMessage msg; if (event.getMessage() instanceof
> MapMessage) Unknown macro}
> else
> Unknown macro: \{ return; }
> {quote}
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)