Le Touilleur ExpressLe Touilleur ExpressLe Touilleur ExpressLe Touilleur Express
  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Adieu System.out.println, vive Log4J

    Home Java Adieu System.out.println, vive Log4J

    Adieu System.out.println, vive Log4J

    Par Nicolas Martignole | Java | Commentaires fermés | 22 décembre, 2003 | 0 | 1 082 affichages
         

    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à.

    Articles similaires:

    Default ThumbnailLog4J and ANSI colors in a xterm Default ThumbnailEnvoyer des messages vers Twitter avec Log4J Default ThumbnailByteArrayOutputStream: vive les buffers de taille variable Default ThumbnailLog4J et log4j.xml
    Java

    Recent Posts

    • GitHub Actions : le tueur de Jenkins ?

      Avouez-le : ce titre de blog est super racoleur. J’avais aussi pensé

      15 février, 2021
    • Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021

      Nous sommes en février 2021 pendant le 3ème confinement lié à la

      10 février, 2021
    • FizzBuzz en Java et Scala (surtout Scala)

      L’exercice FizzBuzz est un petit exercice très simple, à tester par exemple

      9 février, 2021

    Recent Tweets

    • RT  @QuarkusIO : We just released Quarkus https://t.co/ZkyLrP5cFs. The big change is the Fast jar packaging as default (better read the annou…

      10 hours ago
    •  @starbuxman  Très bonne idée 👍🏻

      11 hours ago
    •  @jylls35  Merci je ne savais pas 😀

      1 day ago
    • RT  @benzonico :  @nmartignole  Dans la même veine de dictons : "Il n'y a pas de bons montagnards, il y a des vieux montagnards..."

      2 days ago
    • «... un pilote vieux c’est un pilote chanceux et prudent... » (fin du tweet précédent)

      2 days ago

    Mots clés

    agile (18) ajax (11) Apple (11) architecture (6) barcamp (5) BarCampJavaParis (5) ddd (5) devoxx (33) esb (6) exo (6) flex (9) geek (5) google (11) grails (5) groovy (10) humeur (12) humour (7) independant (6) iphone (12) Java (77) javascript (7) jazoon (28) jboss (22) jboss seam (12) jsf (9) jug (16) Linux (11) mac (6) mule (5) parisjug (7) paris jug (22) pjug (6) play (8) playframework (6) portlet (5) recrutement (6) ria (8) Scala (21) scrum (44) spring (23) Startup (11) usi (21) usi2010 (9) web (16) xebia (7)

    Le Touilleur Express

    Contactez-moi : nicolas@touilleur-express.fr

    Suivez-moi sur Twitter : @nmartignole

    Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
    • A propos de l’auteur
    • A propos du Touilleur Express
    Le Touilleur Express