Добавить контекст логов

Добрый день, есть ли возможность в логи добавить некий контекст?
Я хочу рядом с каждым логом видеть имя пользователя, и полезные данные вроде id, name редактируемой сущности.

К примеру, я вот так создаю логгер на экране.
image

Далее в начале загрузке экрана я хочу вызывать что то вроде

 log.AddContext("user", user.getUsername())
 log.AddContext("entityId", getEditedEntity.getId())

И в дальнейшем я ожидаю, что эти данные будут прикреплены к каждой записи

log.warn(....);
log.info(....);

Добрый день!

Вы описываете что-то похожее на Mapped Diagnostic Context. Единственное, он позовляет задавать контекст в рамках текущего потока выполнения, а не в рамках работы с каким-либо экраном. Так что вам придётся как-то придумать, как задавать контекст перед операциями логгирования в разных методах экрана.

Имя пользователя, кстати, вроде уже можно использовать прямо из коробки. См. LogMdc.java и LogMdcFilter.java. Для этого в своём шаблоне вывода для logback используйте атрибут %X{jmixUser}.

1 симпатия

Хорошо. Спасибо.

Я был вдохновлен SeriLog, который популярен при разработке на C#.
Там есть различные возможности “обогащения” логов вспомогательной информацией в таком духе как я описывал.