[Log4J][Héritage] Création d’une classe de log personnalisée
Bonjour,
J’ai dû rater une subtilité grosse comme une poutre, mais je dois admettre que cela me laisse dubitatif.
J’ai créé une classe destiné, à terme, à ma faciliter la gestion des logs (basés sur Log4J).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
import org.apache.log4j.*;
public class Log extends Logger {
static final Logger logger = Logger.getLogger("MonLog");
/** Creates a new instance of Log */
protected Log(String name) {
super(name);
BasicConfigurator.configure();
logger.setLevel(Level.INFO);
}
/*
Je compte placer ici mes fonctions perso
*/
} |
Comme vous le constatez, cette classe hérite de org.apache.log4j.Logger.
Lorsque j’utilise cette classe
Code:
1 2 3 4 5
|
public static void main(String args[]) {
Log log = new Log("MonLog");
log.info("Mon texte à afficher");
} |
Je me retrouve avec une exception :
Code:
1 2 3 4 5
|
Exception in thread "main" java.lang.NullPointerException
at org.apache.log4j.Category.info(Category.java:753)
at TstMain.main(TstMain.java:21)
Java Result: 1 |
Alors que si je complète ma classe Log avec une méthode info() qui se contente de faire appel à son homologue dans Logger :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
import org.apache.log4j.*;
public class Log extends Logger {
static final Logger logger = Logger.getLogger("MonLog");
/** Creates a new instance of Log */
protected Log(String name) {
super(name);
BasicConfigurator.configure();
logger.setLevel(Level.INFO);
}
public void info(Object message) {
logger.info(message);
}
/* …
Je compte placer ici mes fonctions perso
*/
} |
Cela fonctionne très bien.
Bref, il y a-t-il une subtilité dans la classe Logger que je n’aurais pas perçu ?
Celle-ci héritant de la classe Category (qui implémente la méthode info()), je trouve normal de pouvoir acceder à la méthode depuis un objet Logger. Cependant, je ne vois pas pourquoi mon objet Log (héritant lui-même de Logger) ne peux pas exploiter la méthode info() sans avoir à la redéfinir.
Quelqu’un est-il plus inspiré que moi ?
Chris