Pourquoi appeler LoggerFactory.getLogger(...) à chaque fois n'est pas recommandé?

J'ai lu des tonnes de messages et de documents (sur ce site et ailleurs), soulignant que le modèle recommandé pour SFL4J la journalisation est:

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

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

Mon patron préfère simplement utiliser un wrapper pour intercepter les appels du journal et d'éviter la chaudière plaque de code pour déclarer l'enregistreur sur chaque classe:

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

et simplement de l'utiliser comme ceci:

public class MyClass {

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

Je présume que l'instanciation d'un logger à chaque fois que nous journal est un peu cher, mais j'ai pu trouver aucun document de la sauvegarde de cette hypothèse. D'ailleurs, dit-il, sûrement, le cadre (LogBack ou Log4J nous sommes encore à décider) sera "cache" les bûcherons et aussi que, dans tous les cas, les serveurs sont en cours d'exécution très en dessous de leur capacité, de sorte qu'il n'est pas un problème.

Toute aide de pointage d'éventuels problèmes avec cette approche?

  • Un autre point: votre journalisation des lignes devenir laid avec votre patron méthode, puisque l'une connexion correcte de la syntaxe est "MyLoggerWrapper.debug(MyClass.class, "blah blah blah");"
  • Merci Benoit, c'est ce que je voulais montrer, mais dans la précipitation du post, j'ai fait une faute de frappe. C'est juste un exemple, mais nous aimerions utiliser quelque chose comme: MyLoggerWrapper.debug(ce.getClass(), "bla")
  • mais avec statique d'importation, vous avez une belle debug(...) 🙂
  • jetez un oeil à Logger, qui est un ready-made wrapper, vous n'avez pas besoin de créer votre propre
  • La journalisation est une préoccupation horizontale. Éviter de code réutilisable en déplaçant le code dans un aspect, au lieu de l'abandon de détritus de journalisation énoncés dans le code de base.
InformationsquelleAutor danirod | 2010-10-13