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:
Les threads ne font qu'appeler des méthodes de la classe A.
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();
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:
Comment faire...?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 logger.log(Level.DEBUG,"blabla");
Partager