Bonjour,
J'ai développé une appli java demandé pour un tp en cours.
Je dois rajouter la fonction de journalisation, logging, appelé là comme vous le voulez.
Je me suis donc renseigné et j'arrive parfaitement à inscrire des données dans le meme fichier quand les informations à marquer sont dans la même classe.
Par contre si j'ai d'autres informations à marquer provenant d'une même classe dans le même fichier, vu qu'apparemment je dois créer un nouveau FileHandler, du coup ça m'écrase mon fichier ou il y avait les premières infos.
en gros j'ai ça :
Du coup il faudrait au lieu de recréer un FileHandler, quelques chose qui puisse me retourner cette objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 logger = Logger.getLogger("log"); file = new FileHandler("log"); file.setFormatter(new SimpleFormatter()); // Fichier de sortie en format texte logger.info("test"); logger.addHandler(file); file.close();
J'ai donc crée cette classe :
que j'utilise comme ceci dans mes différentes classes :
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
27
28
29
30
31
32
33
34
35
36
37 import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class Logging { public Logger logger; public FileHandler file; public Logging() {} public void initialiser() throws SecurityException, IOException{ logger = Logger.getLogger("log"); file = new FileHandler("log"); file.setFormatter(new SimpleFormatter()); // Fichier de sortie en format texte logger.info("Initialisation de la journalisation"); logger.addHandler(file); file.close(); } public void setAjout(String message){ logger = Logger.getLogger("log"); logger.info(message); logger.addHandler(getFichier()); file.close(); } public FileHandler getFichier(){ return file; } public Logger getLogger(){ return logger; } }
Mais ceci n'est pas la solution car j'initialise donc l'ensemble des mes variables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Logging log = new Logging(); log.initialiser(); log.setAjout("Démarrage de l'application");
J'ai donc parti après sur cette solution:
Mettre cette partie ou j'ai besoin d'enregistrer une info :
Puis mettre le même principe ailleurs, mais de ce cas là je n'ai que la dernière inscription dans le fichier de log.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Logger logger = Logger.getLogger("log"); FileHandler fichier = new FileHandler("log"); fichier.setFormatter(new SimpleFormatter()); // Fichier de sortie en format texte logger.addHandler(fichier); logger.log(Level.INFO, "début affichage");
J'ai donc réessayé en me disant que sans recréer le FileHandler en appelant juste le logger par getLogger() et ajouter la nouvelle inscription, mais ça ne marche pas. Je ne dois pas être loin mais je n'ai plus d'idée...
Aurez vous une solution alors pour écrire dans le même fichier de log à partir de différentes classes?
Merci d'avance,
Partager