Je vais faire de la pub pour Log4J, une API Java développée par le groupe Apache. Log4J permet d’ajouter facilement à une application Java la possibilité de loguer des messages d’info, de debug, d’erreur etc. Les messages peuvent être affichés directement sur la console, enregistré dans un fichier, envoyé à un serveur distant via Socket, ajouté aux syslogs unix ou au journal des évenements de Windows. Bref vraiment tres puissant. Le formatage des messages est facilement configurable, il est possible d’activer/désactiver l’affichage d’une trace en temps réel, de faire tourner les fichiers de logs lorsqu’ils sont pleins… .
Les 3 concepts à retenir de log4j: logger, appender et layout: un logger logue un message vers un ‘appender’ en utilisant un ‘layout’.Le site d’Apache Log4JExemple avec un fichier de configuration XMLVoici un exemple d’une class Java utilisant un logger, dont la configuration est externe au programm et est effectuée dans un fichier XML:
/* TestLog4JXML * Created by : nicmarti * Date: 27-Nov-2003 - Time: 12:40:50 * Copyright(c) 2003 Nicolas Martignole. */package com.test.nicmarti; import org.apache.log4j.Logger;import org.apache.log4j.xml.DOMConfigurator;/** TestLog4JXML est un exemple simple qui affiche des messages * de logs et dont la configuration est effectuée via * un fichier XML externe. A l'execution ce fichier doit etre * dans le classpath. * @version 27-Nov-2003 12:40:50 * @author Nicolas Martignole */public class TestLog4JXML { static Logger log= Logger.getLogger(TestLog4JXML.class);public static void main(String args[]) { // Fichier de conf DOMConfigurator.configure("log4j.xml");// Passe 1 log.info("Info message 1"); log.debug("Debug message 1"); log.warn("Warn message 1"); log.error("Error message"); log.fatal("Fatal message");log.info("<<>>"); log.info("Note: if a telnetappender is started you can connect now"); try { while(System.in.read()==-1){ } } catch (IOException e) { e.printStackTrace(); } // Message envoyes sur la console et telnetadapter log.info("Info message step 2"); log.debug("Debug message step 2"); log.warn("Warn message step 1"); log.error("Error message step 2"); log.fatal("Fatal message step 2"); log.info("<<>>"); try { while (System.in.read() == -1) { } } catch (IOException e) { e.printStackTrace(); } // Unplug everything log.removeAllAppenders();// Close all sockets LogManager.shutdown(); }}
Voici le fichier de configuration log4j.xml que j’ai défini:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><!-- ===================================================================//--><!-- Exemple simple de fichier de configuration XML pour Log4J //--><!-- ===================================================================//--><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- Un appender similaire a la console System.out //--> <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.SimpleLayout"/> </appender> <!-- Un appender qui affiche un message formate dans la console --> <appender name="MyAppender" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %p - %m%n"/> </layout> </appender><!-- Appender qui demarre un serveur Telnet sur le port 8123 et envoie sur --> <!-- la socket les messages de logs. Faire un 'telnet localhost 8123' pour voir --> <!-- les messages a distance. Note: si l'application se referme alors pas de message --> <!-- Note 2: il est possible aussi d'utiliser un navigateur web meme --> <!-- si les headers HTTP ne sont pas generes. Ouvrir http://localhost:8123 --> <appender name="TelnetTest" class="org.apache.log4j.net.TelnetAppender"> <param name="port" value="8123"/> <layout class="org.apache.log4j.HTMLLayout"> <param name="title" value="Titre de ma page HTML"/> </layout> </appender><!-- Configuration --> <root> <priority value="debug"/> <appender-ref ref="ConsoleAppender"/> <appender-ref ref="MyAppender"/> <appender-ref ref="TelnetTest"/> </root></log4j:configuration>
En conclusion, nous voyons que Log4J est très pratique pour mettre en place rapidementet proprement une gestion des logs dans une application.Voili voilà.
0 no like