[logback-user] Modifing MDCPropertyMap of LoggingEvents
Ceki Gülcü
ceki at qos.ch
Mon Mar 9 21:37:46 CET 2015
MDC is a thread-wide structure. At present time, it cannot be set per
logging event. Any changes you make to the mdcPropertyMap (retrieved by
calling event.getMDCPropertyMap()) will be visible to all future events
generated in the same thread.
On 3/9/2015 21:03, Cemo wrote:
> I have a layout which is generating JSON from logging events and MDC
> Context. MDC is great and I want to add parameters to MDC Context
> conditionally. For example, I would like add request information as JSON
> into MDC conditionally on Error Level log entries. I am not familiar
> with Logback internals but gave a try with Logback Filter
> implementation. I have used:
>
> public FilterReply decide(ILoggingEvent event) {
>
> // simplifiedfor demo
> // conditionally I am putting some attributes here
> Map<String,String> mdcPropertyMap = event.getMDCPropertyMap();
> if (event.getLevel().isGreaterOrEqual(Level.ERROR)) {
> mdcPropertyMap.put("demo","demo");
> }
> return FilterReply.ACCEPT;
> }
>
>
>
> I am expecting mdcPropertyMap to be cleared for each event but it does
> not. LoggingEvent has a internal CACHED_NULL_MAP map and its modified
> per touch.
>
> private static final Map<String,String> CACHED_NULL_MAP =new HashMap<String,String>();
>
>
> I could not be sure but it seems a little bid buggy to me. Can someone
> verify this behaviour?
>
> For those who are interested why I am not using MDC.put in a Servlet
> Filter implementation because I am conditionally adding some attributes.
> Serialising HttpRequest into JSON is not cheap task but having Http
> Request information is giving great insights about error. Using Filter
> is the only way I found to add conditionally attributes so far. What I
> would like to use is:
>
>
> public FilterReply decide(ILoggingEvent event) {
> if (event.getLevel().isGreaterOrEqual(Level.WARN)) {
> MDC.put("demo","demo");
> }
> return FilterReply.ACCEPT;
> }
>
>
>
>
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
>
More information about the Logback-user
mailing list