Вот решение, которое я в итоге использовал.
Создайте класс с именем org.slf4j.impl.StaticMDCBinder
внутри вашего проекта.Это может быть копия org.slf4j.impl.StaticMDCBinder
, поставляемая с slf4j.
Измените этот класс так, чтобы он возвращал ваш собственный экземпляр MDCAdapter.Поскольку я знал, что буду использовать Logback в качестве базовой системы ведения журналов, я просто создал подкласс ch.qos.logback.classic.util.LogbackMDCAdapter
и переопределил метод put
, чтобы принудительно ввести ключ в нижний регистр.
Связыватель:
public class StaticMDCBinder {
public static final StaticMDCBinder SINGLETON = new StaticMDCBinder();
private StaticMDCBinder() {
}
public MDCAdapter getMDCA() {
return new DavesMDCAdapter();
}
public String getMDCAdapterClassStr() {
return DavesMDCAdapter.class.getName();
}
}
И адаптер MDC
public class DavesMDCAdapter extends LogbackMDCAdapter {
public void put(String key, String val) throws IllegalArgumentException{
super.put(key.toLowerCase(),val);
}