`
cloudeagle_bupt
  • 浏览: 536911 次
文章分类
社区版块
存档分类
最新评论

log4j配置文件追加记录

 
阅读更多

package tt;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ParaTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {

    /**
     *  目的: 比较两种方法的速率快慢
     *  第一种方法: 单独一个线程串行的向日志文件中写入2048个元素
     *  第二种方法: 两个线程并行,一个线程生成2048个元素后,另外一个获取该容器的锁,并写入日志文件。
     */

		/**
		 * case 1:
		 */
		PThread_1 p1 = new PThread_1();
		Thread t1 = new Thread(p1);
		long startTime = System.currentTimeMillis();
		t1.start();
		t1.join();
		long endTime = System.currentTimeMillis();
		System.out.println("The T1 running time is :" + (endTime - startTime));

		/**
		 * case 2:
		 */
		PThread_2 p2 = new PThread_2();
		PThread_3 p3 = new PThread_3();
		Thread t2 = new Thread(p2);
		Thread t3 = new Thread(p3);
		t2.start();
		t2.join();
		
		startTime = System.currentTimeMillis();
 		t3.start();
 		t3.join();
		endTime = System.currentTimeMillis();
		System.out.println("The T3 running time is :"
				+ (endTime - startTime));
	}

}

class PThread_1 implements Runnable {

	public static List<Long> lt = new ArrayList<Long>();
	public static final Log pThread_1 = LogFactory.getLog(PThread_1.class);

	PThread_1() {
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		while (lt.size() < 2048) {
			lt.add(System.currentTimeMillis());
		}

		for (int i = 0; i < 2048 ; i++) {
			pThread_1.info(lt.get(i));
		}
		 
		lt.clear();
	}
}

class PThread_2 implements Runnable {

	public static List<Long> lt = new ArrayList<Long>();

	PThread_2() {
	}

	@Override
	public void run() {
		synchronized (lt) {
			while (lt.size() < 2048) {
				lt.add(System.currentTimeMillis());
			}
//			lt.notifyAll();
		}
	}
}

class PThread_3 implements Runnable {

	public static final Log pThread_3 = LogFactory.getLog(PThread_3.class);

	PThread_3() {
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		synchronized (PThread_2.lt) {
//				try {
//					if(PThread_2.lt.size()<2048)
//					PThread_2.lt.wait();
//				} catch (InterruptedException e) {
//					// TODO Auto-generated catch block
//					e.printStackTrace();
//				}
			
			if (PThread_2.lt.size() >= 2048) {
				for (int i = 0; i < PThread_2.lt.size(); i++)
					pThread_3.info(PThread_2.lt.get(i));
			}
			PThread_2.lt.clear();
		}
	}
}


log4j.properties配置文件

// log4j.rootLogger = [ level ] , appenderName, appenderName, …

//appenderName是输出源的名字,它指定日志信息输出到哪个地方, 如配置控制台输出,:

log4j.rootLogger=WARN, Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n

注: 如果上面这段觉得多的话,至少应该有这句:

log4j.rootLogger=WARN

否则会有log4j:WARN No appenders could be found for logger


// 配置自己的pThread_1输出, Java代码中要加入publicLog pThread_1 = LogFactory.getLog(PThread_3.class);
log4j.logger.tt.PThread_1=INFO,p1 // tt.PThread_1,这里要注明包名, 为tt.PThread_1,见上面Java代码
log4j.appender.p1=org.apache.log4j.FileAppender
log4j.appender.p1.File=D://log4j/pThread_1.log
log4j.appender.p1.layout=org.apache.log4j.PatternLayout
log4j.appender.p1.layout.ConversionPattern=%d %p [%c] - %m%n

// 同上
log4j.logger.tt.PThread_3=INFO,p3
log4j.appender.p3=org.apache.log4j.FileAppender
log4j.appender.p3.File=D://log4j/pThread_3.log
log4j.appender.p3.layout=org.apache.log4j.PatternLayout
log4j.appender.p3.layout.ConversionPattern=%d %p [%c] - %m%n



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics