package com.github.signed.boot.logfilter;
import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import java.util.Map;
import static ch.qos.logback.core.util.OptionHelper.extractDefaultReplacement;
public class MDCStructuralConverter extends ClassicConverter {
private String key;
private String name;
@Override
public void start() {
String[] keyInfo = extractDefaultReplacement(getFirstOption());
key = keyInfo[0];
if (keyInfo[1] == null) {
name = key;
} else {
name = keyInfo[1];
}
super.start();
}
@Override
public void stop() {
key = null;
name = null;
super.stop();
}
@Override
public String convert(ILoggingEvent event) {
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
if (key == null || mdcPropertyMap == null || !mdcPropertyMap.containsKey(key)) {
return "";
}
String value = mdcPropertyMap.get(key);
if (value == null) {
return "";
}
return name + "=" + value;
}
}