您的位置:首页 > 其它

log4j配置文件追加记录

2013-09-19 09:55 239 查看
 

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代码中要加入public Log  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: