logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robin Coe <rcoe.java...@gmail.com>
Subject JSONLayout serializes the MDC as a List<Map<String,String>>?
Date Mon, 04 Jan 2016 19:54:58 GMT
I was trying to deserialize a log event written by the JSONLayout appender,
which uses Jackson.  I therefore also am using Jackson but with the
MrBeanModule, which is a POJO materializer.  After much difficulty with
Jackson throwing deserialization exceptions with the "contextMap" field, I
learned that the map is actually written out as a List of Maps (i.e.
List<Map<String,String>>.  I've included one such event here, with
unnecessary fields shortened:

{"timeMillis":...,"thread":"...","level":"OFF","loggerName":"...","message":"...","endOfBatch":false,"loggerFqcn":"...","contextMap":[{"key":"LOGROLL","value":"com.xxx.xxx.handler.event.FailoverHandler"},{"key":"ROUTINGKEY","value":"elasticsearch-rollover"}]}

I'm curious why the contextMap is represented as the more complex List of
single entry Maps, as opposed to a single multi-valued Map?  So, instead of
something that looks like:


{"contextMap":[{"key":"key1"},{"value":"value1"},{"key":"key2"},{"value":"value2"},...]

I would expect the much simpler (and easily parseable):
    {"contextMap":{"key1":"value1","key2":"value2",...}.

Is this intended?

Thanks,
Robin.

Mime
View raw message