2015-11-08 2 views
4

У меня есть два варианта инициализации Logger внутри класса.Каков наилучший способ инициализации регистратора в классе?

Первый способ обеспечивает экземпляр Class<?>:

logger = LoggerFactory.getLogger(SignUpController.class); 

и второй проходит в String идентификатор (пакет и имя класса):

logger = LoggerFactory.getLogger("controller.SignUpController"); 

На вопросы :

Каков наилучший способ инициализации регистратора для класса?
Какие модификаторы следует использовать с? (модификаторы доступа, static, final)

ответ

6

Я использую

public final Logger = LogFactory.getLogger(getClass()); 

Для одного это обеспечит всегда правильное имя класса, даже после рефакторинга имени класса. Накладные расходы одного экземпляра регистратора на экземпляр объекта против каждого класса не учитываются.

Я использую только статический логгер, когда мне нужно записывать что-то в качестве статического контекста, а затем инициализировать его с помощью вашего первого подхода.

4

Используйте первую один

private static final Logger logger = LoggerFactory.getLogger(SignUpController.class); 

Потому, что апи (который принимает объект класса), метод внутренне вызывает полное имя класса, поэтому рубки/конфигурация может быть выполнена правильно.

Я использую private static final потому частного: для экземпляра регистратор не должен быть доступен вне класса и статического: нет никакого смысла иметь отдельный экземпляр для каждого объекта класса и окончательного чтобы не измените ссылку после ее инициализации.

Смежные вопросы