title: How do I setup log4j properties so that each thread outputs to its own log file?
body: <p>I have multiple instances of a thread class running at any given time. I have log4j setup to be used for logging needs.</p>
  
  <p>I need a way to setup log4j so that every instance of my thread class outputs its log in a different log file.</p>
  
  <p>Here is what I have done ( in pseudo code)</p>
  
  <pre><code>public class doSomething extends Thread {
  
      private Logger d_logger;
  
      public doSomething(int id){
         d_logger = Logger.getLogger("doSomething"+id);
         String logFileName = "doSomething"+id+".log";
  
         Properties prop = new Properties;
         prop.setProperty("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);
      }
  
      public void run(){
         d_logger.info("Starting to doSomething number" + id);
      }
  
  }
  </code></pre>
  
  <p>Though the above creates a file for every thread I instantiate, It does not output anything to those files. Any help is much appreciated. </p>