2015-09-07 4 views
2

Я читал при входе в Java, и похоже, что SLF4J - это путь.Мотивация для Java Журналы Таможня

То, что я не понимаю, - это то, почему объект регистрации получен/инициализирован так, как он есть.

Почему

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

нужно быть в каждом классе?

  1. Почему вместо этого у вас есть только статический экземпляр журнала для всех классов/классов? (Что произойдет, если я не создам новые экземпляры для каждого класса?)

  2. Зачем мне нужно передать объект класса класса, на котором используется регистратор, на заводе? В любом случае, не будет ли во всех версиях журнала все эти данные? (Что произойдет, если я прохожу какой-то другой объект класса?)

+0

Это не о том, как это получается, но о том, как получить Это. Технически вы можете создать одноэлементный класс, который получает экземпляр журнала и использует этот экземпляр везде. – piezol

+0

«Что произойдет, если я не создам новые экземпляры для каждого класса?» -Ты просто попробуй! «Что произойдет, если я передам другой объект класса?» - Снова - просто сделай это, и ты увидишь. Спойлер: регистратор будет сконфигурирован в соответствии с конфигурацией, предоставленной фреймворку базы данных. Итак, если вы укажете App.class и приложение в my.sample.namespace, вы можете, например, настроить для входа в журнал, чтобы регистрировать все на уровне INFO для «my. *», Но в DEBUG для «my.sample. *» .. – Fildor

+0

Несомненно, параметр 'getLogger' отличается в каждом классе? Обычно вы не указываете параметр вообще и получите объект журнала, названный в честь класса, в котором этот оператор определен. Затем вы можете видеть в журналах, класс которых создает сообщение. –

ответ

1
  1. Вы действительно можете создать одноплодный регистратор, который может быть использован в любом месте. Но мы обычно создаем регистратор для каждого класса только для фильтрации журналов.
  2. это только для обозначения экземпляра регистратора, который вы создали, на самом деле вы можете передать любую строку, которую вы хотите, и ничего не будет Ex: Logger logger = LoggerFactory.getLogger("any name");
Смежные вопросы