IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Logging Java Discussion :

[Log4J] Messages en double


Sujet :

Logging Java

  1. #1
    Membre habitué Avatar de GAEREL
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 160
    Points : 147
    Points
    147
    Par défaut [Log4J] Messages en double
    Bonjour à tous.

    Voici mon problème (un pb de compréhension j'imagine)

    Soient 2 classes dans 2 packages distincts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package fr.gui.tests.log;
    
    import org.apache.log4j.Logger;
    import fr.gui.tests.log.subpackage.SubClass;
    
    public class MainClass {
        public static void main(String[] args) {
            Logger.getLogger(MainClass.class).info("MainClass INFO message");
            Logger.getLogger(MainClass.class).debug("MainClass DEBUG message");
            new SubClass();
        }
    }
    et dans un sous package :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package fr.gui.tests.log.subpackage;
    
    import org.apache.log4j.Logger;
    
    public class SubClass {
        public SubClass() {
            super();
            Logger.getLogger(getClass()).info("SubClass INFO Message");
            Logger.getLogger(getClass()).debug("SubClass DEBUG Message");
        }
    }
    Et le fichier de properties LOG4J associé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    log4j.rootLogger=INFO,myAppender
    
    log4j.appender.myAppender=org.apache.log4j.ConsoleAppender
    log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.myAppender.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss,SSS}] %p %m%n
    En exécutant ce code j'ai bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [24/08/15 09:31:42,744] INFO MainClass INFO message
    [24/08/15 09:31:42,747] INFO SubClass INFO Message
    Si je modifie le properties comme suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    log4j.rootLogger=DEBUG,myAppender
    
    log4j.appender.myAppender=org.apache.log4j.ConsoleAppender
    log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.myAppender.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss,SSS}] %p %m%n
    J'ai bien (et c'est cohérent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [24/08/15 09:32:46,190] INFO MainClass INFO message
    [24/08/15 09:32:46,191] DEBUG MainClass DEBUG message
    [24/08/15 09:32:46,191] INFO SubClass INFO Message
    [24/08/15 09:32:46,191] DEBUG SubClass DEBUG Message
    Maintenant mon problème : je voudrais que seules les classes du 'subpackage' soient en debug
    Je modifie donc mon properties comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    log4j.rootLogger=INFO,myAppender
    log4j.logger.fr.gui.tests.log.subpackage=DEBUG,myAppender
    
    log4j.appender.myAppender=org.apache.log4j.ConsoleAppender
    log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.myAppender.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss,SSS}] %p %m%n
    Et j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [24/08/15 09:34:56,129] INFO MainClass INFO message
    [24/08/15 09:34:56,129] INFO SubClass INFO Message
    [24/08/15 09:34:56,129] INFO SubClass INFO Message
    [24/08/15 09:34:56,130] DEBUG SubClass DEBUG Message
    [24/08/15 09:34:56,130] DEBUG SubClass DEBUG Message
    Pourquoi tous les messages de ma SubClass sont ils en double ???

    Merci de votre aide

  2. #2
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    J'arrive un peu tard, mais voilà.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.rootLogger=INFO,myAppender
    définit l'appender pour toutes les classes, dont celle du package fr.gui.tests.log.subpackage.

    Du coup, il y a deux appender pour les classes du package fr.gui.tests.log.subpackage, avec un level prioritaire. D'où les deux sorties de log.

    Par exemple, tester et commenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    log4j.rootLogger=DEBUG,myAppender
    log4j.logger.fr.gui.tests.log.subpackage=INFO,myAppender
     
    log4j.appender.myAppender=org.apache.log4j.ConsoleAppender
    log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.myAppender.layout.ConversionPattern=[%d{dd/MM/yy HH:mm:ss,SSS}] %p %m%n

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Remplace simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.logger.fr.gui.tests.log.subpackage=DEBUG,myAppender
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log4j.logger.fr.gui.tests.log.subpackage=DEBUG
    Pour éviter de lui associer un deuxième appender.

Discussions similaires

  1. [OL-2010] Message en double dans 2 messageries
    Par patch2007 dans le forum Outlook
    Réponses: 4
    Dernier message: 06/03/2012, 22h59
  2. [LOG4J] message localisés ?
    Par rimas2009 dans le forum Logging
    Réponses: 1
    Dernier message: 01/07/2011, 11h11
  3. message :conversion double from struct impossible
    Par oliv27400 dans le forum Images
    Réponses: 0
    Dernier message: 02/07/2010, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo