log4j配置文件追加记录

来源:互联网 发布:技术服务咨询平台软件 编辑:程序博客网 时间:2024/06/15 03:32

 

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() {}@Overridepublic void run() {// TODO Auto-generated method stubwhile (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() {}@Overridepublic 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() {}@Overridepublic void run() {// TODO Auto-generated method stubsynchronized (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



原创粉丝点击