(转)log4j 一个线程记录一个日志如何配置?

log4j 一个线程记录一个日志如何配置?

现有一后台java程序,分四个线程去运行,想通过log4j 一个线程记录一个日志,如何搞? 求高人指教,谢谢!

 

Java Web 31 次浏览 2011-06-18 15:48

 

5 个回答

 

四个线程分别使用不同的日志文件就行了。
2011-06-18 15:49 推荐: 0 次

 

引用 1 楼 im110 的回复:

四个线程分别使用不同的日志文件就行了。

具体如何搞?
我现在是这么做的
新建四个log4j.properties 1-4
新建四个X.log 日志文件,每个properties文件指定一个日志文件 
然后
protected Logger log = Logger.getLogger(getClass());
public void run() {
PropertyConfigurator.configure("log4j"+(i+1)+".properties");
...
...
...
log.debug(i+"xxxxxxxxxxxx");
}

但这样搞不行,四个日志文件里相互的线程都有
2011-06-18 15:58 推荐: 0 次

 

求高人~~~
2011-06-21 08:41 推荐: 0 次

 

Java code
public class ThreadLog1 extends Thread { private static Logger logger = Logger.getLogger( " file_1 " ); private boolean stop = false ; public void run() { while ( ! stop){ System.out.println( " I am ThreadLog1 " ); logger.info( " I am ThreadLog1 " ); try { Thread.sleep( 1000 ); } catch (InterruptedException e) { e.printStackTrace(); } } } public boolean isStop() { return stop; } public void setStop( boolean stop) { this .stop = stop; } }

Java code
public class ThreadLog2 extends Thread { private static Logger logger = Logger.getLogger( " file_2 " ); private boolean stop = false ; public void run() { while ( ! stop){ System.out.println( " I am ThreadLog2 " ); logger.info( " I am ThreadLog2 " ); try { Thread.sleep( 1000 ); } catch (InterruptedException e) { e.printStackTrace(); } } } public boolean isStop() { return stop; } public void setStop( boolean stop) { this .stop = stop; } public static void main(String []args){ ThreadLog1 log1 = new ThreadLog1(); ThreadLog2 log2 = new ThreadLog2(); log1.start(); log2.start(); } }


log4j.properties:

log4j.logger.file_1 = DEBUG,file_1
log4j.appender.file_1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file_1.layout=org.apache.log4j.PatternLayout
log4j.appender.file_1.layout.ConversionPattern=\n[%p %d{yyyy-MM-dd HH:mm:ss SSS}[%l]]\n%m
log4j.appender.file_1.file=d:/log/file_1/log.txt
log4j.additivity.file_1=false

log4j.logger.file_2 = DEBUG,file_2
log4j.appender.file_2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file_2.layout=org.apache.log4j.PatternLayout
log4j.appender.file_2.layout.ConversionPattern=\n[%p %d{yyyy-MM-dd HH:mm:ss SSS}[%l]]\n%m
log4j.appender.file_2.file=d:/log/file_2/log.txt
log4j.additivity.file_2=false
2011-06-21 09:41 推荐: 0 次

非常感谢 yangxuan0418,原来可以Logger.getLogger("file_2"); 这样用,谢谢!
不过今上 午发现还有一个方法可以实现 就是改用log4j.xml,利用org.apache.log4j.varia.LevelRangeFilter和 org.apache.log4j.varia.StringMatchFilter可以做到分级分线程记录日志,希望也可以给大家一些启示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值