关于log4j的一些使用心得

做实验时需要将程序产生的异常记录到日志中,因此用到了log4j,log4j是第三方的库,用之前需要导入到项目中,导入之后,最关键的步骤是写配置文件——log4j.properties,下面针对我在实验中遇到的问题来简单关于写配置文件的一些事情。

如果一个项目很大,我们可能需要将日志写到不同的文件中去,这样做的好处是避免日志文件过大,同时也方便日后的查询使用。通过配置log4j.properties,我们可以做到这点:

在配置文件中,通常会有一个根目的地,如下:

log4j.rootLogger = DEBUG,CONSOLE

这里根目的地中设置将日志输出到控制台,同时日志只记录DEBUG级别以上的日志记录。

然后我们还需要以下代码才能实现将日志输出到控制台:

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n

在具体的程序代码中使用如下语句:

Logger logger1 = Logger.getLogger("rootLogger");
logger1.error("log");

可以实现将“log”输出到控制台,如果我们需要将日志写到文件中,我们可以将根目的地进行修改,如下:

log4j.rootLogger = DEBUG,CONSOLE,firstAdpter

然后我们需要添加相应的配置语句实现输出到文件的功能,如下:

log4j.appender.firstAdpter=org.apache.log4j.FileAppender
log4j.appender.firstAdpter.file=src\\GraphPoet.log
log4j.additivity.firstAdpter = false
log4j.appender.firstAdpter.layout=org.apache.log4j.PatternLayout
log4j.appender.firstAdpter.layout.ConversionPattern=[%p] %d{yyyy-MM-dd HH:mm:ss} [%t] (%F:%L) %m%n

这样就可以实现将日志同时输出到控制台和文件中去,但是,如果我们需要将日志输出到多个文件中去时,我们需要对配置文件进行改造,如下:

log4j.rootLogger = DEBUG,CONSOLE
log4j.logger.firstLogger =DEBUG,firstAdpter
log4j.logger.secondLogger =DEBUG,secondAdpter
log4j.logger.thirdLogger =DEBUG,thirdAdpter
log4j.logger.fouthLogger =DEBUG,fouthAdpter

同时对每一个目的地都需要进行配置,以“firstAdpter”为例:

log4j.appender.firstAdpter=org.apache.log4j.FileAppender
log4j.appender.firstAdpter.file=src\\GraphPoet.log
log4j.additivity.firstAdpter = false
log4j.appender.firstAdpter.layout=org.apache.log4j.PatternLayout
log4j.appender.firstAdpter.layout.ConversionPattern=[%p] %d{yyyy-MM-dd HH:mm:ss} [%t] (%F:%L) %m%n

其余的同理,在具体记录时,可以通过不同的目的名进行匹配,如下:

Logger logger1 = Logger.getLogger("firstLogger");
logger1.error("log");

这两行代码会将“log”信息输出到“firstAdpter”对应的“GraphPoet.log”文件中。我们甚至可以删除根目的地的相关配置信息,只保留我们需要的配置信息,如下:

log4j.logger.firstLogger =DEBUG,firstAdpter
log4j.logger.secondLogger =DEBUG,secondAdpter
log4j.logger.thirdLogger =DEBUG,thirdAdpter
log4j.logger.fouthLogger =DEBUG,fouthAdpter
需要注意的是,如果根目的地会输出所有其他目的地输出的日志消息,比如所,在上面的未删除根目的地的配置文件下,我们在程序中使用了如下代码:
Logger logger1 = Logger.getLogger("firstLogger");
logger1.error("log");

那么我们不仅会在“GraphPoet.log”文件中看到“log”,同时也会在控制台中看到“log”。

参考文章:http://www.cnblogs.com/crazyacking/p/5456347.html




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值