
fi.evolver.basics.spring.log.LogMetadataAttribute Maven / Gradle / Ivy
package fi.evolver.basics.spring.log;
import fi.evolver.utils.ContextUtils;
import fi.evolver.utils.attribute.ContextRegistrableAttribute;
import org.slf4j.MDC;
import java.util.Optional;
/**
* A combined attribute for setting a metadata for both Slf4j and message logs.
*
* Note: make sure to clean the value afterwards to avoid MDC leaks.
*
* @see fi.evolver.utils.attribute.Slf4jMdcAttribute
* @see MessageLogMetadataAttribute
*/
public class LogMetadataAttribute implements ContextRegistrableAttribute {
private final String name;
/**
* Create a new log metadata attribute.
*
* @param name The name of the attribute.
*/
public LogMetadataAttribute(String name) {
this.name = name;
}
@Override
public String name() {
return name;
}
@Override
public Optional get() {
return Optional.ofNullable(MDC.get(name));
}
@Override
public void set(String value) {
if (value != null) {
MDC.put(name, value);
MessageLogMetadataAttribute.CONTEXT_LOG_METADATA.get().put(name, value);
ContextUtils.register(this);
}
else {
MDC.remove(name());
MessageLogMetadataAttribute.CONTEXT_LOG_METADATA.get().remove(name, value);
}
}
@Override
public Class type() {
return String.class;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy