Bonjour à vous,
Je ne connais pas bien log4j et je pense que mon problème viens de la. Enfin bref, après avoir fait des recherches j'en suis au même point:

Je possède une instance de classe A qui dans une méthode génère un tableau d'instances de classe B qui correspond à mes threads:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
MyThread[] threads = new MyThread[threadNumber];
			for (int i = 0; i < threadNumber; i++) {
				// build a thread for this sub set
				threads[i] = new EffCalcThread(this);
			}
			ThreadPool pool = new ThreadPool(threads);
			pool.start();
Les threads ne font qu'appeler des méthodes de la classe A.

J'arrive bien a creer un fichier par thread en ajoutant un appender specifique à chaque instance de ma classe B:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
       String logFileName = "doSomething"+id+".log";
       Properties prop = new Properties;
       prop.setProperty("log4j.doSomething"+id,"DEBUG, WORKLOG");
       prop.setProperty("log4j.appender.WORKLOG","org.apache.log4j.FileAppender");
       prop.setProperty("log4j.appender.WORKLOG.File", logFileName);
       prop.setProperty("log4j.appender.WORKLOG.layout","org.apache.log4j.PatternLayout"); 
prop.setProperty("log4j.appender.WORKLOG.layout.ConversionPattern","%d %c{1} - %m%n");
       prop.setProperty("log4j.appender.WORKLOG.Threshold","INFO"); 
       PropertyConfigurator.configure(prop);

Mais impossible d’écrire quelques choses dedans, vu que ça utilise le logger de la classe A...

j'utilise a chaque fois:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
logger.log(Level.DEBUG,"blabla");
Comment faire...?