Médiaforma

Java – Logging avec Log4j

Print Friendly

Le logging (journalisation en français) consiste à ajouter des instructions dans les applications pour émettre et stocker des messages suite à des événements. Vous pouvez par exemple faire du logging pour conserver une trace des exceptions qui se produisent dans une application. Les informations générées pourront être utilisées pour mettre au point ou pour entretenir l’application.

Pour faire du logging avec Java, vous pouvez utiliser un framework dédié tel que Log4j, Java Logging ou JLog. Dans cette formation, nous allons nous intéresser au framework le plus répandu : Log4j.

 

Pour installer ce framework, rendez-vous sur la page http://logging.apache.org/log4j/1.2/download.html et téléchargez la version ZIP de Apache Log4j 2 binary :

 

 

Dézipez cette archive dans un dossier quelconque. Par exemple dans c:\data\apache-log4j-1.2.17\.

La prochaine étape va consister à ajouter le chemin complet vers le fichier log4j-1.2.17.jar dans la variable d’environnement CLASSPATH.

Appuyez simultanément sur les touches Windows et Pause pour afficher la fenêtre Système. Cliquez sur Paramètres système avancés. La boîte de dialogue Propriétés système s’affiche. Sous l’onglet Paramètres système avancés, cliquez sur Variables d’environnement. Double-cliquez sur CLASSPATH et ajoutez le chemin complet vers le fichier log4j-1.2.17.jar dans la variable CLASSPATH :

 

 

Refermez les boîte de dialogue ouvertes en cliquant sur OK.

 

L’API Log4j définit cinq niveaux de logging. Du plus important au moins important :

  • FATAL : erreur grave pouvant entrainer l’arrêt prématuré de l’application ;
  • ERROR : erreur grave mais qui n’empêche pas l’application de fonctionner ;
  • WARN : avertissement (par exemple, incohérence dans la configuration) ;
  • INFO : information (nom des fichiers chargés, etc.) ;
  • DEBUG : messages utiles au débogage.

Pour effectuer une journalisation, vous devez définir :

  • un ou plusieurs loggers ;
  • les appenders correspondants aux loggers ;
  • les layouts correspondants aux appenders.

Les loggers définissent le niveau d’erreur au-dessus duquel un log sera émis et le nom de l’appender correspondant. A titre d’exemple, ce logger indique que tous les messages de niveau supérieur ou égal à ERROR seront envoyés à l’appender stdout :

log4j.rootLogger=ERROR, stdout

 

Les appenders définissent le mode d’enregistrement des événements. Voici les principaux appenders utilisables :

Appender Destination de la journalisation
org.apache.log4j.jdbc.JDBCAppender Base de données
org.apache.log4j.nt.NTEventLogAppender Journal des événements de Windows
org.apache.log4j.lf5.LF5Appender Console basée sur Swing
org.apache.log4j.varia.NullAppender Aucune journalisation
org.apache.log4j.net.SMTPAppender E-mail
org.apache.log4j.net.SocketAppender Serveur de journalisation
org.apache.log4j.ConsoleAppender Console
org.apache.log4j.FileAppender Fichier

 

A titre d’exemple, cet appender envoie les messages dans la console :

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

 

Les layouts définissent la mise en forme des messages de journalisation. Pour en savoir plus sur les différents layouts utilisables et sur leur configuration, consultez la page suivante : http://www.allapplabs.com/log4j/log4j_layouts.htm.

 

Définissez le fichier log4j.properties comme ceci et sauvegardez-le dans un dossier quelconque :

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] (%F:%M:%L) %m%n

 

Vous avez maintenant tous les éléments nécessaires pour créer un projet qui contient des instructions de journalisation.

Lancez l’application NetBeans. Créez un nouveau projet de type Java Application avec classe Main et donnez le nom TestLog4j à ce projet. Développez l’entrée testLog4j dans le volet Projects. Cliquez du bouton droit sur le dossier Libraries et sélectionnez Add JAR/Folder dans le menu. Ajoutez le fichier log4j-1.2.17.jar aux bibliothèques du projet :

 

 

Complétez le code de l’application comme ceci :

package testlog4j;
import org.apache.log4j.Logger;
public class TestLog4j {
    private static Logger = Logger.getLogger(TestLog4j.class);

    public static void main(String[] args) {
        logger.debug("Ceci est un message de débogage");
        logger.info("Ceci est un message d'information");
        logger.warn("Ceci est un message d'avertissement");
        logger.error("Ceci est un message d'erreur");
        logger.fatal("Ceci est un message d'erreur fatale");
    }
}

 

Ce code utilise l’instruction import pour faire référence à la bibliothèque org.apache.log4j.Logger.

Il crée ensuite une instance de la classe Logger via la méthode getLogger().

Enfin, cinq messages d’erreur sont affichés dans la méthode main(). Selon le premier paramètre affecté au rootLogger dans le fichier log4j.properties, un ou plusieurs de ces messages seront affichés. Si vous avez initialisé le rootLogger comme ceci :

log4j.rootLogger=DEBUG, stdout

Les cinq messages devraient être affichés :

 

 

Pour que ce programme fonctionne, vous devez copier le fichier log4j.properties dans le dossier src :

 

 

Exercice

Modifiez le fichier log4j.properties pour ajouter les informations de journalisation dans le fichier fichierDeLog.log.

Solution

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=fichierDeLog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%-5p] (%F:%M:%L) %m%n
Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply