Почему не рекомендуется каждый раз вызывать LoggerFactory.getLogger (…)?

Я прочитал множество сообщений и документов (на этом сайте и в других местах), указывающих, что рекомендуемый шаблон для ведения журнала SFL4J:

public class MyClass {
    final static Logger logger = LoggerFactory.getLogger(MyClass.class);

    public void myMethod() {
        //do some stuff
        logger.debug("blah blah blah");
    }
}

Мой босс предпочитает, чтобы мы просто использовали оболочку перехватывать вызовы журнала и избегать стандартного кода для объявления регистратора для каждого класса:

public class MyLoggerWrapper {
    public static void debug(Class clazz, String msg){
        LoggerFactory.getLogger(clazz).debug(msg));
    }
}

и просто использовать его следующим образом:

public class MyClass {

    public void myMethod() {
        //do some stuff
        MyLoggerWrapper.debug(this.getClass(), "blah blah blah");
    }
}

Я предполагаю, что создание экземпляра регистратора каждый раз, когда мы ведем журнал, довольно дорого, но мне не удалось найти любой документ, подтверждающий это предположение. Кроме того, он говорит, что фреймворк (LogBack или Log4J, мы все еще решаем) будет «кэшировать» регистраторы, а также что в любом случае серверы работают намного ниже своей мощности, так что это не проблема.

Любая помощь в указании потенциальных проблем с этим подходом?

42
задан danirod 13 October 2010 в 14:24
поделиться