Использовать имя регистратора, если ключ MDC отсутствует
Я использую logback со сторонним пакетом, который устанавливает идентификатор в MDC, когда его код выполняется. В остальное время этот идентификатор не устанавливается. Так что, если я использую PatternLayout
из [%X{id}] %m%n
то я вижу сообщения типа
[Foo] Foo running
[Bar] Bar running
для сообщений, связанных с пакетом. Тем не менее, остальные мои операторы журнала выглядят как
[] Thing happened
%X{id}
полезная информация, когда она существует, но я бы хотел, чтобы имя регистратора использовалось, когда ее нет. Я старался
[%X{id:-%logger{20}}]
а также
[%X{id:-logger{20}}]
но ни один из них не использовал имя регистратора в качестве значения по умолчанию.
Я мог бы написать собственный макет, который устанавливает идентификатор для имени регистратора, если он не установлен, пересылает в макет и затем очищает поле. Есть ли более простой способ сделать это?