经常看见开发Web应用的时候,有人被控制台输出的大量日志弄得眼花缭乱,启动一个应用,控制台打出
N多没用的日志。那么,如何控制最大限度log4j
的配置文件输出需要的调试信息呢?
Log4j
的Logger
组件配置可以帮助我们屏蔽不必要的日志输出,尤其在项目应用了大量第三方组件的时候,
通过控制Logger
组件可以控制输出某一个组件的日志级别,帮助我们更好的进行调试。
注意:控制的粒度到类一级。也就是说,可以控制某一个类的日志如何输出。
限制:虽然不可以控制到方法一级,但是基本上也够用了。
假设我们现在的类命名空间在 com.foo 下面
我们有2个包
package com.foo.cartoon
package com.foo.common
这2个包下面分别有自己的类文件
在package com.foo.cartoon包下有
com.foo.cartoon.Cat;
在package com.foo.common包下有
com.foo.common.Omia;
- <?xmlversion= "1.0" encoding= "UTF-8" ?>
- <!DOCTYPElog4j :configurationSYSTEM"log4j .dtd" >
- <log4j :configurationxmlns:log4j ="http://jakarta.apache.org/log4j /" >
- <appendername ="CONSOLE" class = "org.apache.log4j .ConsoleAppender" >
- <layoutclass = "org.apache.log4j .PatternLayout" >
- <paramname ="ConversionPattern"
- value="%p[%t]%c{1}.%M(%L)|%m%n" />
- </layout>
- </appender>
- <logger name ="com.foo" >
- <levelvalue="INFO" />
- </logger >
- <logger name ="com.foo.common" >
- <levelvalue="DEBUG" />
- </logger >
- <root>
- <levelvalue="WARN" />
- <appender-refref="CONSOLE" />
- </root>
-
</log4j
:configuration>
那么 针对所有日志(<root>项配置) 都使用WARN级别输出
com.foo 路径下的Class 都使用INFO 级别输出
com.foo.common 路径下的Class 都使用DEBUG 级别输出
---------------
假如想要控制com.foo.common.Omia这一个类的日志输出级别
只需要使用如下配置
<logger
name
="com.foo.common.Omia">
<level value="DEBUG"/>
</logger
>
---------------
如果项目中使用了第三方组件,那么可以用这样的方式控制日志
<logger
name
="org.apache.struts2">
<level value="DEBUG"/>
</logger
>
<logger
name
="org.springframework">
<level value="INFO"/>
</logger
>
这样就可以让struts2的日志按Debug级别输出,让Spring的日志按Info级别输出
本文介绍了如何通过Log4j的Logger组件配置来控制Web应用程序的日志输出,包括不同级别的日志控制,以及如何针对特定类或第三方组件进行精确配置。
7768

被折叠的 条评论
为什么被折叠?



