Le Touilleur Express

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

Adieu System.out.println, vive Log4J

22 décembre, 2003

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

Derniers articles

  • Le chiffrement de bout en bout et la signature d’enveloppe

    Cela va faire bientôt un an que j’ai rejoint Doctolib. La sécurité

    8 mars, 2022
  • L’entretien de recrutement « System Design »

    Si vous postulez chez Doctolib, il y a une petite chance pour

    19 janvier, 2022
  • Retour sur la soirée du lundi 12 juillet chez Doctolib

    Nous sommes le lundi 12 juillet, il est 20h05 et comme pas

    14 août, 2021

Tweets @nmartignole

  • Affirmation fausse = « 1 mn de YouTube c’est X grammes de CO2 ». Fausse car l’électricité n’est pas produite par le… https://t.co/3S4E3AREJv

    1 hour ago
  •  @Bpifrance   @AlbaneBruyas  Je crois bien que  @pbeyssac  et  @waxzce  ont expliqué qu’il était important de ne pas se lan… https://t.co/9FVTKIG5tc

    1 hour ago
  •  @b_labaere  Surtout un coup des 486 personnes côté product/tech qui font un sacré travail.

    22 hours ago

Mots clés

Apple (32) Architecture (13) Big Data (5) Conference (8) Devoxx (55) Dev Web (37) Doctolib (1) geekevent (1) groovy (2) Innoteria (11) Java (517) Linux (10) Non classé (13) Perso (264) Recrutement (2) Scala (30) scrum (43) Société (2) Startup (20) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

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
  • Log In
  • My Account
  • My Profile
  • Reset Password

Le Touilleur Express