[logback-dev] [JIRA] Created: (LBCLASSIC-213) SiftingAppenders MDCBasedDiscriminator does not support deferred processing of LoggingEvents
Torsten Juergeleit (JIRA)
noreply-jira at qos.ch
Thu Jun 17 16:24:16 CEST 2010
SiftingAppenders MDCBasedDiscriminator does not support deferred processing of LoggingEvents
--------------------------------------------------------------------------------------------
Key: LBCLASSIC-213
URL: http://jira.qos.ch/browse/LBCLASSIC-213
Project: logback-classic
Issue Type: Bug
Components: appender
Affects Versions: 0.9.21
Reporter: Torsten Juergeleit
Assignee: Logback dev list
In MDCBasedDiscriminator.getDiscriminatingValue() the MDC of the current thread is referenced:
public String getDiscriminatingValue(ILoggingEvent event) {
String mdcValue = MDC.get(key);
if (mdcValue == null) {
return defaultValue;
} else {
return mdcValue;
}
}
This doesn't work is the logging events are serialized and processed in a different thread or JVM.
Instead using SLF4Js MDC class why not using ILoggingEvent.getMdc() to access the MDC or a serialized version of it?
Maybe something like this:
public String getDiscriminatingValue(ILoggingEvent event) {
if (event != null) {
String mdcValue = event.getMdc().get(getKey());
if (mdcValue != null) {
return mdcValue;
}
}
return getDefaultValue();
}
Right now we have to workaround this by creating our own version of DeferedMDCBasedDiscriminator :-(
Some like this:
public class DeferedMDCBasedDiscriminator extends MDCBasedDiscriminator {
public String getDiscriminatingValue(ILoggingEvent event) {
if (event != null) {
String mdcValue = event.getMdc().get(getKey());
if (mdcValue != null) {
return mdcValue;
}
}
return getDefaultValue();
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list