Я работаю с каркасом Vaadin, и он плохо поддерживает перехват событий, и я не могу знать, когда активируется сеанс или пользовательский интерфейс, поэтому я не могу поместить их идентификаторы в MDC.Logback MDC put() измененный объект
Обычно я бы:
public void onSessionBegin(){
MDC.put("session", VaadinSession.getCurrent().toString()); //<-- String is immutable
}
public void onSessionEnd(){
MDC.remove("session");
}
Но у меня нет таких событий, поэтому я хотел бы, чтобы:
// in the servlet init or wherever
MDC.put("session", new Object(){
public String toString() {
VaadinSession.getCurrent().toString()
};
}); //<-- This is mutable and will be evaluated each time
Таким образом, независимо от того, сколько времени изменится на сессии , в журнале я получу текущий.
Возможно ли это? Как заменить логическую реализацию MDC на обычную? Должен ли я редактировать источники slf4j и logback?