【轉自】http://tobato.iteye.com/blog/152573
經常看見開發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;
使用如下的配置文件:
- <?xml version= "1.0" encoding= "UTF-8" ?>
- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >
- <appender name="CONSOLE" class = "org.apache.log4j.ConsoleAppender" >
- <layout class = "org.apache.log4j.PatternLayout" >
- <param name="ConversionPattern"
- value="%p [%t] %c{1}.%M(%L) | %m%n" />
- </layout>
- </appender>
- <logger name="com.foo" >
- <level value="INFO" />
- </logger>
- <logger name="com.foo.common" >
- <level value="DEBUG" />
- </logger>
- <root>
- <level value="WARN" />
- <appender-ref ref="CONSOLE" />
- </root>
- </log4j:configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%p [%t] %c{1}.%M(%L) | %m%n"/>
</layout>
</appender>
<logger name="com.foo">
<level value="INFO"/>
</logger>
<logger name="com.foo.common">
<level value="DEBUG"/>
</logger>
<root>
<level value="WARN"/>
<appender-ref ref="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級別輸出