I have to admit, I've just never been able to get my head around LogbackMDCAdpater and why it is so complicated. Why did you not choose to just override the childValue method of the InheritableThreadLocal?