Journalisation JAVA, FileHandler
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:
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:
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:
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:
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...:roll:
Aurez vous une solution alors pour écrire dans le même fichier de log à partir de différentes classes?
Merci d'avance,