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