package controleur;
import com.sun.media.jfxmedia.logging.Logger;
import architecture.Controleur;
public class ControleurArmada extends Controleur {
public ControleurArmada()
{
Logger.logMsg(Logger.INFO, "new ControleurArmada()");
}
public void initialiser()
{
Logger.logMsg(Logger.INFO, "ControleurArmada.initialiser()");
}
}
Le symptôme
L'application démarre, les fenêtres s'affichent, tout fonctionne. Mais la console Eclipse reste vide : aucune des traces Logger.logMsg(Logger.INFO, "...") écrites dans les contrôleurs, les vues et les DAO n'apparaît. Changer le niveau, ajouter des traces ou relancer ne change rien.
Logger à votre place. Les zips en ligne sont corrigés depuis cette date.La cause : le mauvais Logger
Regardez le haut du fichier. Si l'import est celui-ci, vous avez trouvé le coupable :
import com.sun.media.jfxmedia.logging.Logger;
C'est le journal interne du lecteur vidéo de JavaFX, pas le journal standard de Java. Eclipse le propose en premier quand on tape Logger puis Ctrl+Espace ou Ctrl+Maj+O, et il se glisse dans le fichier sans qu'on le remarque. Son niveau vient d'une propriété système, jfxmedia.loglevel, dont la valeur par défaut est off. Quel que soit le niveau que vous passez à logMsg, rien ne sort.
La correction en trois gestes
À faire dans chaque classe qui porte l'import fautif. Sous Linux comme sous Windows, les raccourcis Eclipse sont les mêmes.
-
Remplacer l'import par le journal standard de Java :
import java.util.logging.Logger; -
Déclarer le journal juste après l'accolade ouvrante de la classe, en mettant le nom de votre classe à la place de
ControleurArmada:private static final Logger journal = Logger.getLogger(ControleurArmada.class.getName()); -
Remplacer les appels : chaque
Logger.logMsg(Logger.INFO,devientjournal.info(. Le message entre parenthèses ne change pas. Dans Eclipse,Ctrl+Fouvre Rechercher/Remplacer pour le fichier ouvert ; pour tout le projet d'un coup,Ctrl+H, onglet File Search, puis le bouton Replace... avec ces deux valeurs :Rechercher : Logger.logMsg(Logger.INFO, Remplacer : journal.info(
Logger.logMsg quelque part après le remplacement ? C'est un appel avec un autre niveau ou une espace en moins avant le message. Remplacez-le à la main de la même façon.Un contrôleur avant et après
package controleur;
import java.util.logging.Logger;
import architecture.Controleur;
public class ControleurArmada extends Controleur {
private static final Logger journal = Logger.getLogger(ControleurArmada.class.getName());
public ControleurArmada()
{
journal.info("new ControleurArmada()");
}
public void initialiser()
{
journal.info("ControleurArmada.initialiser()");
}
}
Vérifier
Relancez l'application. Chaque trace occupe maintenant deux lignes dans la console : la date, la classe et la méthode d'où elle vient, puis le niveau et le message.
sept. 29, 2026 3:38:36 PM controleur.ControleurArmada <init>
INFO: new ControleurArmada()
- Le texte est rouge dans la console Eclipse : normal. Le journal Java écrit sur la sortie d'erreur, qu'Eclipse colore en rouge. Ce n'est pas une erreur.
- INFO, WARNING et SEVERE s'affichent d'office. Les niveaux plus bas (
journal.fine(...),finer,finest) restent cachés par défaut : gardezinfopour les traces du cours.
Dépannage express, sans toucher au code
Pour vérifier en trente secondes que le problème vient bien de là, on peut allumer le journal interne de JavaFX au lancement : menu Run, Run Configurations..., onglet Arguments, champ VM arguments, ajouter :
-Djfxmedia.loglevel=info
Les traces apparaissent, préfixées de JFXMedia. C'est un test, pas la solution : l'import interne n'a pas sa place dans un projet du cours, et le réglage disparaît avec la configuration d'exécution. Faites la correction en trois gestes.
Récapitulatif
| Objectif | Code |
|---|---|
| Le bon import | import java.util.logging.Logger; |
| Le journal de la classe | private static final Logger journal = Logger.getLogger(NomDeLaClasse.class.getName()); |
| Une trace d'information | journal.info("ControleurArmada.initialiser()"); |
| Un avertissement, une erreur | journal.warning("..."); puis journal.severe("..."); |
| Test express (VM arguments) | -Djfxmedia.loglevel=info |