Retour aux environnements

Afficher les traces INFO en Java

Vos Logger.logMsg restent muets dans la console Eclipse ? Ce n'est pas le niveau, c'est l'import

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.

Concerne les projets Armada, Marina et Laboratheque téléchargés avant le 29 septembre 2026, ainsi que toute classe où Eclipse a complété l'import de 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 :

L'import fautif
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.

  1. Remplacer l'import par le journal standard de Java :
    import java.util.logging.Logger;
  2. 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());
  3. Remplacer les appels : chaque Logger.logMsg(Logger.INFO, devient journal.info(. Le message entre parenthèses ne change pas. Dans Eclipse, Ctrl+F ouvre 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(
Vous voyez encore 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

Avant : rien ne sort
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()");
    }
}
Après : les traces INFO s'affichent
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()
  1. 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.
  2. INFO, WARNING et SEVERE s'affichent d'office. Les niveaux plus bas (journal.fine(...), finer, finest) restent cachés par défaut : gardez info pour 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

Ressources

Armada.zip corrigé (semaines 4-5) Marina.zip corrigé (semaines 4-5) Laboratheque.zip corrigé Rubrique Environnements Un doute ? Le Discord du cours (page Contact)