Bonjour,

Je m'interroge sur les bonnes pratiques de l'utilisation du de Java Logging API.
Durant le cours, j' ai retenu que :

  1. Il faut bannir system.out.println() pour le remplacer par un log de type Level.INFO
  2. logger dans un fichier externe. L'ingénieur système peut avoir besoin de ces logs.


Durant le premier test, j'avais une solution du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
public class Application {
 
    public static void main(String[] args) {
 
        Logger logger = null;
 
        try {
 
            //Configuration du logger
            FileHandler out = new FileHandler("C:\\Temp\\Log\\log1.xml");
            logger = Logger.getLogger(src.uni.presentation.Application.class.getName());
            logger.setLevel(Level.INFO);
            logger.addHandler(out); 
 
            //utilisation du logger
            logger.log(Level.INFO, "Hello world");
 
        } catch (IOException ex) {
 
            logger.log(Level.SEVERE, null, ex);
        } 
 
    }
 
}
Le code fonctionne, mais j'ai reçu une insuffisance. Il paraît qu'il faudrait faire entre 2 et 3 classes en réalité. J'ai donc retravaillé et produit le code ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
public class Logging {
 
    private final String fichier = "C:\\Temp\\Log\\log.xml";
 
    public Logging(){}
 
    public Logger getLogging(Class classe) throws IOException {
 
            FileHandler out = new FileHandler(fichier);
            Logger logger = Logger.getLogger(classe.getName());
            logger.setLevel(Level.INFO);
            logger.addHandler(out); 
 
            return logger;
 
    }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
public class Application {
 
    public static void main(String[] args) {
 
        Logger logger = null;
 
        try {
 
            Logging log = new Logging();
            logger = log.getLogging(src.hearc.app.Application.class);
 
            logger.log(Level.INFO, "Hello World - info");
            logger.log(Level.SEVERE, "Hello World - Severe");
            //Ne sera pas afficher car SETLevel(Level.INFO)
            logger.log(Level.FINE, "Hello World - Fine");
 
        } catch (IOException ex) {
            logger.log(Level.SEVERE, null, ex);
        }   
    }  
}
Pour ceux qui ont de l'expérience, qu'en pensez-vous. Comment puis-je améliorer mon code ? Merci