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 :
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();
Du coup il faudrait au lieu de recréer un FileHandler, quelques chose qui puisse me retourner cette objet.

J'ai donc crée cette classe :
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;
	}
}
que j'utilise comme ceci dans mes différentes classes :
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");
Mais ceci n'est pas la solution car j'initialise donc l'ensemble des mes variables.

J'ai donc parti après sur cette solution:
Mettre cette partie ou j'ai besoin d'enregistrer une info :
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");
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.
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,