log4j implement each thread to save a log file

Source: Internet
Author: User
Tags log4j

Log4j.properties:

# # # Direct log messages to stdout # # #log4j. appender.stdout= org.apache.log4j.consoleappenderlog4j.appender.stdout.target=system.outlog4j.appender.stdout.layout= Org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern=%d{yyyy-mm-dd HH:mm:ss,SSS} [%-5p] [ %c.%m ()]:%c{1}.java%l-%m%n### Direct log messages to MyFile # #log4j. appender.myfile= Org.apache.log4j.DailyRollingFileAppenderlog4j.appender.myfile.file = f:/eespace/log-test/logs/ Mylog.loglog4j.appender.myfile.datepattern= '. ' yyyy-mm-ddlog4j.appender.myfile.layout= Org.apache.log4j.patternlayoutlog4j.appender.myfile.layout.conversionpattern=%d{yyyy-mm-dd HH:mm:ss,SSS} [%-5p] [ %c.%m ()]:%c{1}.java%l-%m%n### Direct log mythreadfile to stdout # #log4j. appender.mythreadfile= Com.demo.hello.provider.log_test. Threaddailyrollingappenderdecoratorlog4j.appender.mythreadfile.maxfilesize= 60log4j.appender.mythreadfile.maxthreadsize=5log4j.appender.mythreadfile.filepath=f:/eespace/log-test/ Logslog4j.appender.myThreadfile.threadLOgfilename=thread_log.loglog4j.appender.mythreadfile.datepattern= '. ' yyyy-mm-ddlog4j.appender.mythreadfile.layout= Org.apache.log4j.patternlayoutlog4j.appender.mythreadfile.layout.conversionpattern=%d{yyyy-mm-dd HH:mm:ss,SSS} [ %-5P] [%c.%m ()]:%c{1}.java%l-%m%n### set log levels-for more verbose logging change ' info ' to ' Debug ' # # #log4j. Rootlo Gger=info, Stdout,myfile#mythreadfilelog4j.logger.com.demo.hello.provider.log_test=info, Stdout,myThreadfile


Threaddailyrollingappenderdecorator:

/** * @author Wumingkun * @version 1.0.0 * @Description */package com.demo.hello.provider.log_test;import Java.io.file;im Port Java.io.ioexception;import org.apache.log4j.dailyrollingfileappender;import org.apache.log4j.layout;/** * @ Author Wumingkun * */public class Threaddailyrollingappenderdecorator Extendsdailyrollingfileappender implements cloneable {private int maxfilesize;private int maxthreadsize;private string Filepath;private string threadlogfilename;d Ailyrollingfileappender fileappender;public Threaddailyrollingappenderdecorator () {super ();} Public threaddailyrollingappenderdecorator (Layout layout, String filename,string datepattern) throws IOException { Super (layout, filename, datepattern);} Public Threaddailyrollingappenderdecorator (Threaddailyrollingappenderdecorator fileappender,string threadName) Throws IOException {This (Fileappender.getlayout (), Fileappender.getfilename (ThreadName), Fileappender.getdatepattern ()); this.fileappender = Fileappender;} Public DailyrollingfileappeNDEr Getfileappender () {return fileappender;} public void Setfileappender (Dailyrollingfileappender fileappender) {this.fileappender = Fileappender;} public int getmaxfilesize () {return maxfilesize;} public void setmaxfilesize (int maxfilesize) {this.maxfilesize = MaxFileSize;} Public Object copy () {try {return this.clone ();} catch (Clonenotsupportedexception e) {e.printstacktrace ();} return null;} public int getmaxthreadsize () {return maxthreadsize;} public void setmaxthreadsize (int maxthreadsize) {this.maxthreadsize = maxthreadsize;} public void SetFilePath (String filePath) {this.filepath = FilePath;} Public String Getthreadlogfilename () {return threadlogfilename;} public void Setthreadlogfilename (String threadlogfilename) {this.threadlogfilename = Threadlogfilename;} public void init (String threadname) {this.name = Threadname;this.setfile (GetFileName (ThreadName)); try {this.setfile ( This.filename, True, false, this.buffersize);} catch (IOException e) {e.printstacktrace ();}}  /** * @return */publicString GetFileName (String threadname) {return this.filepath + file.separator + threadname + file.separator+ This.threadlo Gfilename;}}


Threadloggerfactory:

/** * @author Wumingkun * @version 1.0.0 * @Description */package com.demo.hello.provider.log_test;import java.io.IOExcep Tion;import java.util.enumeration;import org.apache.log4j.appender;import org.apache.log4j.logger;/** * @author Wumingkun * */public class Threadloggerfactory {static final String prefix= "com.demo.hello.provider.log_test"; static Logger Parentlogger; static {parentlogger=logger.getlogger (prefix);} public static Logger GetLogger () {Logger Logger =logger.getlogger (Prefix+thread.currentthread (). GetName ()); Addappender (Logger,thread.currentthread (). GetName ()); return logger;} /** * @param name */private static void Addappender (Logger logger,string threadname) {enumeration<appender> appends =parentlogger.getallappenders (); if (!logger.getallappenders (). hasMoreElements ()) {while (Appends.hasmoreelements ( ) {Appender Appender = (Appender) appends.nextelement (); if (Appender instanceof threaddailyrollingappenderdecorator) { Threaddailyrollingappenderdecorator myappender= (ThreaddaiLyrollingappenderdecorator) appender;try {logger.addappender (new Threaddailyrollingappenderdecorator (Myappender, ThreadName));} catch (IOException e) {e.printstacktrace ();} Continue;} Logger.addappender (Appender);}}}


Threadlogtest:

/** *  * @author Wumingkun * @version 1.0.0 * @Description */package com.demo.hello.provider.log_test;import java.util . Enumeration;import org.apache.log4j.appender;import org.apache.log4j.logger;/** * @author Wumingkun * */public class threadlogtest {static Logger Logger=logger.getlogger (Threadlogtest.class);/** * @param args */public static void main ( String[] args) {MyThread mythread=new MyThread (); for (int i=1;i<11;i++) {new Thread (MyThread, "MyThread" +i). Start ();}} Class MyThread implements runnable{/* (non-javadoc) * @see java.lang.runnable#run () */public void Run () {Logger logger=thr Eadloggerfactory.getlogger (); Logger.debug (Thread.CurrentThread (). GetName () + "-----Debug"); Logger.info ( Thread.CurrentThread (). GetName () + "-----info");}}


Results:

watermark/2/text/ahr0cdovl2jsb2cuy3nkbi5uzxqvd29izw5kawfua3vu/font/5a6l5l2t/fontsize/400/fill/i0jbqkfcma==/ Dissolve/70/gravity/southeast ">



log4j implement each thread to save a log file

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.