您的位置:首页 > 其它

Log4j如何控制不同包的输入级别

2008-11-06 09:38 363 查看
Log4j如何控制不同包的输入级别

我们在做web开发,会使用spring和hibernate等框架,日志记录会使用log4j,这是如果设置调试的级别为debug的话,spring和hibernate以及其他web项目中用到的框架的调试信息也会输出的日志文件或者控制台中(输出依赖于Log4J的日志配置),这样我们真正需要的调试信息就会淹没在框架的debug信息中,毕竟我们是在开发Web应用,而不是在调试框架,如何控制spring和hibernate等的调试级别呢?

这是个非常重要的功能.但是大部分介绍 Log4J的资料,尤其是中文资料,竟然都没有写这部分.这里介绍其方法。通过设置log4j的logger来控制。



log4j.rootLogger=INFO,
stdout, logfile

细部控制如何控制。比如,想屏蔽Hibernate。那么这么设置。
og4j.logger.org.hibernate=FATAL

意思是,所有org.hibernate的子孙Logger都只显示符合 level >= FATAL 的信息。

小于 FATAL的信息,就不显示。

如果一个配置中有多个logger,他们之间会有什么关系呢?答案是,在输出上,他们没有任何关系,都是独立运作的,

不相关的,但是在配置上,父包的配置会传给子包,如果子包没有另外定义配置的话。

例如上面配置文件中的两个logger:

log4j.logger.com.wolfsquare

log4j.logger.com.wolfsquare.log2

这里认为 log4j.logger.com.wolfsquare.log2 继承自 log4j.logger.com.wolfsquare,他们的配置声明如下:

log4j.rootCategory=INFO, stdout, fileout

log4j.logger.com.wolfsquare.log2=,stdout

注意第二句没有指定输出级别,那么根据配置继承规则会继承父logger的配置,在这里就是INFO。

同时需要强调的是,如果两个logger有继承关系,且输出到同一个appender,根据输出独立原则,那么将会出现两行一样的信息,

例如上面的两个logger定义会导致这样的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐