Как использовать log4j в коде? - PullRequest
2 голосов
/ 09 ноября 2010

Мы должны ввести логирование в нашем приложении. Мы решили использовать log4j, это хороший выбор. Также кто-то сказал, что мы должны использовать шаблон синглтона для использования log4j, кто-то может подчеркнуть, как и почему?

Ответы [ 3 ]

6 голосов
/ 09 ноября 2010

В одноэлементном шаблоне поле Logger является статическим для класса:

public class SomeAwesomeClass {

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

}

Альтернатива состоит в том, чтобы сделать поле Logger нестатичным (то есть каждый экземпляр SomeAwesomeClass содержит ссылку на Logger):

public class SomeAwesomeClass {

    private final Logger logger = Logger.getLogger(SomeAwesomeClass.class);

}

Я не думаю, что имеет большое значение, какой маршрут вы выберете, так как я считаю, что Log4j будет постоянно возвращать один и тот же экземпляр Logger для каждогоэкземпляр SomeAwesomeClass.На самом деле, это просто ненужные ссылки на объекты, так что вы можете также использовать шаблон синглтона.

Однако , шаблон не-синглтон становится необходимым, если вы делаете что-то вроде этого:1018 *

Позже ...

SomeAwesomeClass o = new AwesomerClass();
o.doSomething();

В этом примере поле logger будет соответствовать AwesomerClass, а не SomeAwesomeClass.

5 голосов
/ 09 ноября 2010

Если вы вводите журнал впервые, используйте Logback.Используйте файл конфигурации как предложенный здесь и добавьте его в путь к классам.Ведение журнала будет настроено автоматически.

2 голосов
/ 09 ноября 2010

Причина, по которой синглтон иногда предпочтительнее, заключается в том, что нам нужен только один экземпляр Logger для приложения , в противном случае для каждого нового экземпляра регистратора будет новый файл или перезапись существующий файл журнала.

То, будет ли Log4J хорошим выбором или нет, будет зависеть от ваших исследований / опыта работы с различными доступными регистраторами. Все зависит от ваших предпочтений (я все время использую Log4J, так как мне легче его настраивать, но я не склонен к каким-либо регистраторам).

Известные из них:

  • Log4J
  • SLF4J
  • Logback
  • Собственная логика Java ....

В Интернете есть несколько примеров, показывающих, как использовать регистраторы. Здесь - краткое сравнение Log4J с SLF4J.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...