использовать Logger.getLogger () каждый раз, когда мне это нужно, или создавать один раз для каждого класса - PullRequest
9 голосов
/ 03 июня 2011

Я использую утилиту Java Logger. Согласно документации для метода Logger.getLogger, в нем говорится: «Найти или создать регистратор для именованной подсистемы. Если регистратор уже был создан с заданным именем, он возвращается. В противном случае создается новый регистратор». Будет ли еще полезна возможность звонить только один раз за урок?

Вариант 1:

public class Myclass 
    static Logger logger = Logger.getLogger(Myclass.class);

    public void method1() {
        logger.log(...);
    }

    public void method2() {
        logger.log(....);
    }
}

Вариант 2:

public class Myclass {
    public void method1() {
        Logger.getLogger(Myclass.class).log(...);
    }

    public void method2() {
        Logger.getLogger(Myclass.class).log(...);
    }
}

Ответы [ 2 ]

6 голосов
/ 03 июня 2011

Есть две не очень важные причины, по которым наличие одного статического (возможно, конечного) экземпляра лучше, чем постоянный вызов getLogger.

  1. Это немного облегчает чтение кода (на мой взгляд).
  2. Существует очень небольшой штраф за производительность, который вы платите, если звоните Logger.getLogger все время. Не о чем беспокоиться, если только вы не звоните по нему миллионы раз в тесном цикле, но он есть.

Тем не менее, личные предпочтения намного важнее, чем любая из этих причин. Вариант 1 является общим подходом, но если вы предпочитаете вариант 2, то обязательно используйте его. Это не повредит вашему коду.

0 голосов
/ 03 июня 2011

Я вижу только то, что более короткие строки журнала делают код более понятным. Но - на практике нет никакой разницы во время выполнения

...