Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to use log4j in Multithread using java?

I want to write log for each thread using log4j and log file name will be "workthread..log",first thread print log on file "workthread-1.log" and second thread on "workthread-2.log" and so on.

class MyRunnable implements Runnable 
  {
       private Logger logger=null;

       public MyRunnable()
        {
            DOMConfigurator.configure(this.getClass().getClassLoader().getResource(LOG4J_FILEPATH));
            logger =Logger.getLogger(classname);
        }

        public void run() 
        {
          logger.info("Important job running in MyRunnable"+Thread.currentThread().getName());
        }
   }


public class TestThreads 
{
    public static void main (String [] args) 
     {
        Thread[] worker=new Thread[3];
        MyRunnable r = new MyRunnable();

        for(int i=0;i<3;i++) {
           worker[i]=new Thread(r);
           worker[i].start();
        }


    }
}//class

please help me?

Regards

like image 516
Sameek Mishra Avatar asked Jan 19 '23 05:01

Sameek Mishra


1 Answers

you could use MDC

MDC.put(key,value); --in the code

and %X{key}-- in the file name field in the log4j configuration file

like image 183
Shamis Shukoor Avatar answered Jan 28 '23 23:01

Shamis Shukoor