<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>tobato</title>
    <description></description>
    <link>http://tobato.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>如何更好的掌控日志输出-Log4j &lt;logger&gt;配置项介绍</title>
        <author>tobato</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tobato.javaeye.com">tobato</a>&nbsp;
          链接：<a href="http://tobato.javaeye.com/blog/152573" style="color:red;">http://tobato.javaeye.com/blog/152573</a>&nbsp;
          发表时间: 2008年01月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          经常看见开发Web应用的时候，有人被控制台输出的大量日志弄得眼花缭乱，启动一个应用，控制台打出<br />N多没用的日志。那么，如何控制最大限度log4j的配置文件输出需要的调试信息呢?<br /><br />Log4j的Logger组件配置可以帮助我们屏蔽不必要的日志输出，尤其在项目应用了大量第三方组件的时候，<br />通过控制Logger组件可以控制输出某一个组件的日志级别，帮助我们更好的进行调试。<br /><br />注意:控制的粒度到类一级。也就是说，可以控制某一个类的日志如何输出。<br />限制:虽然不可以控制到方法一级，但是基本上也够用了。<br /><br />假设我们现在的类命名空间在 com.foo 下面<br />我们有2个包<br />package com.foo.cartoon<br />package com.foo.common<br /><br />这2个包下面分别有自己的类文件<br />在package com.foo.cartoon包下有 <br />com.foo.cartoon.Cat;<br /><br />在package com.foo.common包下有<br />com.foo.common.Omia;<br /><br />使用如下的配置文件:<br /><pre name="code" class="java">
&lt;?xml version="1.0" encoding="UTF-8" ?>
&lt;!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

&lt;log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    &lt;appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        &lt;layout class="org.apache.log4j.PatternLayout">
            &lt;param name="ConversionPattern"
                value="%p [%t] %c{1}.%M(%L) | %m%n"/>
        &lt;/layout>
    &lt;/appender>

    &lt;logger name="com.foo">
        &lt;level value="INFO"/>
    &lt;/logger>

    &lt;logger name="com.foo.common">
        &lt;level value="DEBUG"/>
    &lt;/logger>     
      
    &lt;root>
        &lt;level value="WARN"/>
        &lt;appender-ref ref="CONSOLE"/>
    &lt;/root>

&lt;/log4j:configuration>

</pre><br /><br />那么 针对所有日志(&lt;root>项配置) 都使用WARN级别输出<br />com.foo 路径下的Class 都使用INFO 级别输出<br />com.foo.common 路径下的Class 都使用DEBUG 级别输出<br /><br />---------------<br /><br />假如想要控制com.foo.common.Omia这一个类的日志输出级别<br />只需要使用如下配置<br />&lt;logger name="com.foo.common.Omia"><br />&lt;level value="DEBUG"/><br />&lt;/logger> <br /><br />---------------<br /><br />如果项目中使用了第三方组件，那么可以用这样的方式控制日志<br /><br />&lt;logger name="org.apache.struts2"><br />&lt;level value="DEBUG"/><br />&lt;/logger><br /><br />&lt;logger name="org.springframework"><br />&lt;level value="INFO"/><br />&lt;/logger><br /><br />这样就可以让struts2的日志按Debug级别输出，让Spring的日志按Info级别输出
          <br/>
          <span style="color:red;">
            <a href="http://tobato.javaeye.com/blog/152573#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jan 2008 11:24:32 +0800</pubDate>
        <link>http://tobato.javaeye.com/blog/152573</link>
        <guid>http://tobato.javaeye.com/blog/152573</guid>
      </item>
  </channel>
</rss>