Эти типы корпусов, особенно в EJB, обычно лучше всего обрабатываются через локальное состояние резьбы. Обычно вариант использования - это то, что у вас есть конкретная транзакция, которая сталкивается с проблемой, и вам нужно поднять логгинг для отладки для этой операции, чтобы вы могли генерировать подробные записи о проблеме. Перенесите какое-либо локальное состояние потока в транзакции и используйте это, чтобы выбрать правильный регистратор. Честно говоря, я не знаю, где было бы полезно установить уровень на INSTANCE в этой среде, потому что отображение экземпляров в транзакцию должно быть функцией уровня контейнера, вы фактически не будете контролировать, какой экземпляр используется в данная транзакция в любом случае.
Даже в случаях, когда вы имеете дело с DTO, обычно не рекомендуется проектировать вашу систему таким образом, чтобы требовался конкретный экземпляр, потому что дизайн может легко развиваться способами, которые делают это плохо выбор. Вы можете прийти через месяц и решить, что соображения эффективности (кэширование или какая-то другая оптимизация жизненного цикла) нарушат ваше предположение о сопоставлении экземпляров с единицами работы.
Несколько вопросов, которые вы могли бы задать себе и добавить как отредактировать свой вопрос. Какова ваша мысль и против ее преемственности? Что означает переходный период? – svrist
Я должен был упомянуть, мне нравится идея иметь регистратор для каждого экземпляра, а не один для каждого класса. У меня было бы много экземпляров одного и того же класса, созданных и управляемых контейнером (скажем, контекст приложения Spring) и хотелось бы переключать уровни ведения журнала на основе каждого компонента, а не на основе каждого класса. В примере контекста приложения Spring регистратор будет объявлен как что-то вроде приватный конечный переходный процесс Logger log = Logger.getLogger (getBeanName()); где боб больше не POJO и реализует BeanNameAware – Vihung
См. Также [FAQ SLF4J] (http://www.slf4j.org/faq.html#declared_static): * «Должны ли члены класса Logger объявлять как static ... [...] Таким образом, объявление членов журнала в качестве статических переменных требует меньшего времени процессора и имеет немного меньший объем памяти. [...] Однако переменные экземпляра позволяют создавать отдельную среду регистрации для каждого приложения, даже для журналов, объявленных в разделяемых библиотеках. Возможно, что более важно, чем ранее упомянутые соображения, переменные экземпляра IOC-friendly, тогда как статические переменные - нет ». * – Arjan