2012-01-20 6 views
2

Согласно документации Spring Framework, регистрация является единственной обязательной зависимостью Spring. Он использует регистрацию сообщений Apache Commons по умолчанию или может быть настроен вместо SLF4J или Log4J. Мой вопрос заключается в приложении, которое я пишу, используя Spring, вместо использования другого класса logger и создания экземпляра нового объекта logger в моем приложении, можно ли получить ссылку на журнал, который Spring использует для себя?Возможно ли получить ссылку на регистратор Spring?

ответ

4

Уверенный - регистраторы ссылаются только на свое имя. Поэтому, если Spring использует «org.springframework.beans.abc» (например) в качестве имени журнала, вы также можете запросить регистратор с тем же именем. (Весна не регистрируется с использованием только одного регистратора/имени - она ​​использует несколько, в зависимости от того, что вы используете весной - как и должно быть.)

Однако я бы настоятельно рекомендовал против этого. Стоимость создания нового объекта регистрации должна быть минимальной - и любая экономия при этом будет более чем компенсирована дополнительной путаницей этого. Весна ведет журналы к именам Spring logger. Ваш код должен регистрироваться на имя регистратора, уникальное для вашего кода. В противном случае, если что-то заносится в журнал, откуда вы знаете, происходит ли это из кода Spring или вашего кода? Это полностью разрушило бы назначение имен журналов/категорий.

2

Необходимо прояснить некоторые моменты. Apache Commons Logging - это логический фасад, а не сам журнал. Библиотеки Spring используют этот фасад, чтобы избежать связи с какой-либо конкретной реализацией ведения журнала.

Spring (или что-нибудь еще, что использует ведение журнала Apache Commons) может быть настроен на использование SLF4J, предоставляя реализацию моста, которую SLF4J предоставляет для ведения журнала Apache Commons. SLF4J также является логическим фасадом, но имеет улучшения по протоколу Apache Commons и это то, что я лично рекомендовал бы использовать для входа в ваш код. Регистрация с помощью SLF4J также позволяет избежать связи с какой-либо конкретной реализацией каротажа.

Дополнительную информацию о SLF4J вы найдете на своем сайте http://www.slf4j.org. На первой странице SLF4J Manual показано, как создать регистратор и использовать его. Когда ваш код использует логгер SLF4J, он делегирует ведение журнала во время выполнения для реального регистратора, такого как Log4J, java.util.logging или Logback, в зависимости от того, какую привязку slf4j вы предоставляете в пути к классам.

Как правило, для ведения журнала обычно используется логгер для каждого другого класса, который регистрирует (путем присвоения имени каждому регистратору с полным классом класса, использующим его). Этот принцип продемонстрирован в руководстве SLF4J, которое я привел выше.