Habituellement, le processus de réalisation d’un programme en Java s’accompagne habituellement de ce genre de ligne:
System.out.println( "Connexion à " + bd + " réussie" );
Log4j
Le loggeur comme log4j permet d’éviter que tous les messages de plusieurs programmes arrivent tous sur la console. Par exemple, dans le cadre d’un serveur tomcat, les logs de chaque application web vont aller dans des fichiers différents.
Installation du jar
En premier lieu, il faut installer le fichier log4j-1.2.17.jar dans le dossier WebContent/WEB-INF/lib/ pour le déploiement.
En second lieu, il faut ajouter ce jar à la compilation du projet eclipse. Clic droit sur le fichier jar dans le dossier WebContent/WEB-INF/lib/, menu Build Path > Add to Build Path.
Fichier de configuration log4j.properties
Un fichier log4j.properties doit exister pour indiquer les réglages du logger log4j.
Le contenu de ce fichier est disponible en téléchargement: log4j.properties et à placer dans le dossier src de Java Ressource
La première ligne de log4j.properties indique que le logger log4j doit afficher tous les événements de niveau debug vers la console classique (stdout) et vers un fichier avec rotation cyclique (Rolling File Appender).
log4j.rootLogger=debug, stdout, R
Nota: la rotation cyclique permet de ne conserver que les derniers fichiers de log au lieu d’avoir une multiplication des fichiers avec le temps et la masse des événements qui s’accumule.
La ligne suivante indique que le fichier sera créé dans le dossier logs de l’installation de tomcat. Je peux consulter directement ce fichier pour avoir l’affichage de mes logs.
log4j.appender.R.File=${catalina.home}/logs/fr.ema.lgi2p.afaire.log
Code pour l’utilisation du logger
La construction du logger log4j se fait avec un appel à la méthode statique Logger.getLogger.
private Logger logger = Logger.getLogger("fr.ema.lgi2p.afaire.Controleur");
L’utilisation du logger se fait alors avec un appel à logger.trace, logger.debug, logger.info, logger.warm, logger.error, logger.fatal selon le niveau de log du message
logger.error( String.format( "Connexion à {} réussie" , bd ) );
Nous pouvons utiliser des niveaux de logger TRACE, DEBUG, INFO, WARN, ERROR et FATAL, en fonction de la criticité de l’erreur. Trace est considéré comme le niveau le plus détaillé alors que Fatal est à utiliser pour les erreurs les plus graves.
En activant la ligne:
log4j.rootLogger=error, stdout, R
J’indique que je ne veux logger que les erreurs de type Error ou Fatal. Cela me permet d’éviter de surveiller trop d’informations en provenance de l’application. A l’inverse en activant
log4j.rootLogger=debug, stdout, R
Je surveille tous les logs de type Debug, Info, Warm, Error et Fatal.
Installation du Log viewer dans Eclipse
Pour simplifier l’affichage des log dans Eclipse, un plugin du marketplace permet d’ouvrir et de surligner les lignes selon des critères à définir. Par exemple en rouge les messages d’erreur et en blanc sur fond blanc les messages du niveau informatif.
Menu Eclipse > Help > Eclipse Marketplace …
Il faut chercher Log Viewer et l’installer et l’ajouter à Eclipse via le menu Windows>Show View > Others…
Utilisation de Log Viewer
En premier lieu, il faut ouvrir le fichier des logs créé dans le dossier tomcat/logs/ avec le bouton Open Logfile:
En second lieu, il faut indiquer les règles que l’on veut appliquer au Log Viewer via le bouton Show rules preferences:
La liste des règles peut être modifié pour mettre en surbrillance différentes lignes des logs selon un critère de recherche:
Conclusion
L’utilisation des logs permet de concevoir une application plus ou moins verbeuse selon les besoins. Il permet aussi d’éviter de mélanger différentes sorties d’écran ou de fichiers voire des solutions de suivi de logs.