HOWTO · Java

console.log en Java

Découvrez comment afficher des messages en Java avec System.out.println, puis quand choisir une API ou un framework de journalisation comme java.util.logging, Log4j ou SLF4J avec Logback.

Sur cette page

Java ne possède pas de fonction intégrée console.log : ce nom appartient à JavaScript. Pour afficher rapidement un message dans un programme Java, utilisez System.out.println. Pour une application qui a besoin de niveaux de gravité, de destinations configurables ou d’un format homogène, choisissez une API ou un framework de journalisation.

Utiliser System.out.println

System.out.println écrit une valeur sur la sortie standard, puis passe à la ligne. Ce programme Java complet affiche un message de bienvenue :

public class ConsoleExample {
    public static void main(String[] args) {
        String message = "Hello, Java!";
        System.out.println(message);
    }
}
Hello, Java!

Le programme envoie la valeur de message sur la sortie standard. Cette approche convient à un petit programme en ligne de commande, à un diagnostic ponctuel ou à un résultat destiné à la personne qui lance le programme. Elle est simple, mais n’offre ni niveaux de journalisation, ni horodatage, ni destinations configurables. Dans une application plus importante, des instructions d’affichage dispersées sont plus difficiles à filtrer et à gérer.

Si une syntaxe d’appel familière vous est utile, vous pouvez écrire votre propre enveloppe : définissez une classe Console avec une méthode static void log(String message) dont le corps appelle System.out.println(message), puis appelez Console.log("Ready"). Console.log est votre code, pas une API intégrée à Java ; cela ne dote pas Java de la fonction JavaScript console.log.

Utiliser des frameworks de journalisation Java

Une API de journalisation permet au code d’enregistrer des messages selon leur gravité, tandis qu’une implémentation gère leur format et leur destination, par exemple la console ou un fichier. Les niveaux distinguent généralement les messages de diagnostic des avertissements et des erreurs. La configuration détermine quels messages sont affichés et où ils sont envoyés ; les sorties ordinaires n’ont donc pas à se mélanger aux journaux de l’application.

Java inclut java.util.logging dans sa bibliothèque standard. C’est un choix pratique si vous voulez une API de journalisation sans ajouter de dépendance tierce. Log4j est une implémentation distincte, dotée d’appenders et de formats configurables. SLF4J joue un autre rôle : c’est une façade qui fournit à l’application une API de journalisation commune. Pour produire des journaux, elle a besoin d’un fournisseur ou d’une liaison compatible. À moins d’avoir une raison précise de relier ou de combiner plusieurs systèmes de journalisation, choisissez une seule implémentation pour l’application.

Voici un petit exemple avec java.util.logging : récupérez un logger avec Logger logger = Logger.getLogger(MyClass.class.getName());, puis appelez logger.info("Service started");, logger.warning("Retrying request"); ou logger.severe("Request failed");. Ces appels utilisent la configuration de journalisation intégrée au JDK et ne nécessitent donc aucune dépendance supplémentaire. Avec le gestionnaire de console par défaut, une ligne représentative contient un horodatage, le niveau et le message, par exemple INFO: Service started ; le préfixe complet et les niveaux activés dépendent de la configuration de journalisation de l’environnement d’exécution. Il s’agit d’une illustration de l’API et de son format habituel, et non d’un résultat d’exécution rapporté.

Mettre en œuvre SLF4J avec Logback

Pour utiliser SLF4J avec Logback dans un projet Maven, ajoutez la dépendance org.slf4j:slf4j-api ainsi que le fournisseur ch.qos.logback:logback-classic, dans des versions compatibles. Ce dernier fournit l’implémentation Logback de l’API SLF4J. Choisissez les versions à l’aide de la gestion des dépendances de votre projet : celles d’exemples plus anciens peuvent ne plus convenir. Ce guide ne présente donc pas de paire de versions précise comme étant à jour.

Dans une classe Java, déclarez private static final Logger logger = LoggerFactory.getLogger(MyClass.class);, puis consignez des messages avec des appels tels que logger.info("Service started"), logger.warn("Retrying request") ou logger.error("Request failed", exception). La dernière forme transmet une exception afin que l’implémentation puisse en enregistrer la trace de pile. Lorsque Logback figure dans le chemin de classes à l’exécution, le fournisseur achemine ces appels selon sa configuration. Par exemple, une configuration de console pourrait afficher INFO MyClass - Service started ; ce format est indicatif, il ne s’agit pas d’un résultat observé. Le seuil, le format et la destination effectifs dépendent de la configuration de Logback. En faisant passer les appels de l’application par SLF4J, vous pouvez changer de fournisseur en limitant les modifications du code qui utilise cette façade.

Conclusion

Utilisez System.out.println lorsqu’un petit programme a simplement besoin d’afficher du texte dans la console. Pour journaliser une application avec des niveaux de gravité, une configuration et plusieurs destinations possibles, choisissez une implémentation telle que Log4j ou Logback. java.util.logging est disponible dans la bibliothèque standard de Java ; SLF4J fournit une façade qui relie le code de l’application à un fournisseur comme Logback.

FAQ

À quoi sert la journalisation en Java ? Elle enregistre des événements qui aident à comprendre le fonctionnement d’une application, à diagnostiquer des problèmes et à surveiller son activité. Évitez d’inclure des secrets ou d’autres données sensibles dans les messages de journalisation.

À quoi servent les niveaux de journalisation ? Des niveaux comme debug, info, warn et error permettent de distinguer les détails de diagnostic des événements notables et des défaillances. Un seuil défini dans la configuration contrôle les niveaux qui sont émis.

Une application peut-elle utiliser plusieurs frameworks de journalisation ? Elle peut inclure plusieurs systèmes de journalisation ou des ponts entre eux, mais cela complique la configuration et peut produire des sorties en double. Préférez un seul moteur et un pont choisi délibérément lorsqu’une dépendance utilise une autre API de journalisation.

SLF4J est-il lui-même un moteur de journalisation ? Non. SLF4J est une façade. Ajoutez un fournisseur compatible, comme Logback, pour que les appels effectués par son intermédiaire soient pris en charge par une implémentation.

Quand choisir un framework plutôt que System.out.println ? Choisissez un framework si vous devez filtrer les messages selon leur niveau, modifier les destinations ou le format au moyen de la configuration, ou gérer les journaux de façon cohérente dans les composants de l’application. Pour un programme court ou un résultat unique à afficher, System.out.println suffit généralement.