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).
Comme vous le constatez, cette classe hérite de org.apache.log4j.Logger.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Lorsque j’utilise cette classe
Je me retrouve avec une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5public static void main(String args[]) { Log log = new Log("MonLog"); log.info("Mon texte à afficher"); }
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 : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
Cela fonctionne très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import 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 */ }
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

 

 
		
		 
         
 

 
			
			


 
   


 [Log4J][Héritage] Création d’une classe de log personnalisée
 [Log4J][Héritage] Création d’une classe de log personnalisée
				 Répondre avec citation
  Répondre avec citation


 
			 Envoyé par stepmaniac
 Envoyé par stepmaniac
					
				
Partager