Utiliser Log4j

Publié le 26 Mars 2010

Log4j est une bibliothèque de log en Java qui est très connue et très utilisé actuellement.

Elle permet entre autres de gérer plusieurs niveaux de log (debug, info, warn, error, ...) et plusieurs sorties (console, fichier, etc).

Bref c'est un outil très performant et très utile qui permet d'éviter le recours à des System.out.println() qui n'offre pas autant de souplesse.

De plus son utilisation est assez simple:

Tout d'abord il faut récupérer le jar log4j sur le site d'Apache: http://logging.apache.org/log4j/ et l'inclure dans le classpath Java.

Ensuite son utilisation au niveau du code se fait de la manière suivante:

package com.over-blog.patatos.example;

/**
 * importation de la classe Logger
 * qui est celle qu'on va utiliser pour générer les logs
 */

import org.apache.log4j.Logger;

public class App {

   /**
    * Déclaration du logger que nous allons utilisé
    * On utilise la classe App pour générer un nom de logger
    * unique dans notre application ici:
    * com.over-blog.patatos.example.App
    */

   private static Logger logger = Logger.getLogger(App.class);

   /**
    * Une méthode main où on va juste effectuer un log
    * Un Hello World Log4j en somme
    */

   public static void main(String[] args){
      logger.info("Hello World!");
   }

}


La notre programme est presque prêt! Il compile sans erreur mais il reste encore une étape : la configuration de log4j.

La configuration s'effectue au travers d'un fichier de configuration: log4j.properties ou log4j.xml (les 2 formats sont possibles).
Ici nous allons utilisé un fichier properties assez simple:

# Set root category priority to DEBUG and its only appender to CONSOLE.
log4j.rootCategory=DEBUG, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %c{1} %x - %m%n


La dernière ligne spécifie le format de log à générer. On peut donc facilement changer le format ou le niveau de log en modifiant le fichier de propriétés. Il n'y a donc pas besoin de recompiler notre programme à chaque changement de configuration.

Il reste cependant une fonctionalité à ajouter dans notre programme : le chargement de la configuration log4j.

Cela s'effectue grâce à la classe PropertyConfigurator de log4j.
Donc il faut ajouter l'import suivant à notre classe java:

import org.apache.log4j.PropertyConfigurator;

Ensuite dans la méthode main nous allons configurer log4j à l'aide de la méthode configure:

PropertyConfigurator.configure(
          App.class.getClassLoader().getResource("log4j.properties"));


Il faut ensuite placer le fichier log4j.properties dans le classpath java et le tour est joué.

Rédigé par Bliz

Publié dans #Java

Repost 0
Commenter cet article