分享

log4j.xml 配置

 魏正钦的图书馆 2016-09-09
<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">  
<log4j:configuration xmlns:log4j="http://jakarta./log4j/">

<!-- 可以配置多个appender来对应不同的输出,如文件输出,sql输出,控制台输出,邮件输出等 -->  
  <!-- [控制台STDOUT] 不同的输出类型对应着不同的calss,如控制台输出class对应着 org.apache.log4j.ConsoleAppender -->  
  <appender name="console" class="org.apache.log4j.ConsoleAppender">  <!-- name提供给logger或者root调用 -->
     <param name="encoding" value="gbk" />  <!-- 保存字符集 -->
     <param name="target" value="System.out" />  <!-- 输出到控制台 -->
     <layout class="org.apache.log4j.PatternLayout"> <!-- loyout表示输出方式,可以多种,class值区分,PatternLayout表示自定义格式 --> 
       <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" />  <!-- 输出格式,后面解释 -->
     </layout>  
      <!--filter过滤器设置输出的级别:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
          所有下面输出的是debug到warn不会有error和fatal
      -->  
        <filter class="org.apache.log4j.varia.LevelRangeFilter">  
            <param name="levelMin" value="debug" />  
            <param name="levelMax" value="warn" />  
            <param name="levelMax" value="error" />  
            <param name="AcceptOnMatch" value="true" />  <!-- 答案:http://bbs.csdn.net/topics/350195913 -->
        </filter>  
  </appender>  
  
  <!-- [公共Appender] 这个class表示输入到文件,并且按日期生成新文件-->  
  <appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">  
     <param name="File" value="${webapp.root}/logs/common-default.log" />  <!-- ${webapp.root}项目根路径,自动获得,不用配置,可自己在web.xml中配置 -->
     <param name="Append" value="true" />  <!-- 是否项目重启继续保存之前日志 -->
     <param name="encoding" value="gbk" />  
     <param name="threshold" value="all" /> <!-- 记录所有类型日志,记录它和比它等级高的日志all<debug -->
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  <!-- 日期格式  例子:common-default.log.2015-09-17.log-->
     <layout class="org.apache.log4j.PatternLayout">  <!-- 输出方式 -->
    <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" />  
     </layout>  
   </appender>  
  
   <!-- [debug日志APPENDER] -->  
   <appender name="DEBUG-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">  
     <param name="File" value="${webapp.root}/logs/controller/debug-log.log" />  
     <param name="Append" value="true" />  
     <param name="encoding" value="utf-8" />  
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  
     <layout class="org.apache.log4j.PatternLayout">  
        <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" />  
     </layout>  
   </appender>  
   
   <!-- [info日志APPENDER] -->  
   <appender name="INFO-APPENDER"  class="org.apache.log4j.DailyRollingFileAppender">  
     <param name="File" value="${webapp.root}/logs/controller/info-log.log" />  
     <param name="Append" value="false" />  
     <param name="encoding" value="gbk" />
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  
     <layout class="org.apache.log4j.PatternLayout">  
    <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" />  
     </layout> 
     <!-- 我只想记录info日志,就做如下设置 -->
     <filter class="org.apache.log4j.varia.LevelRangeFilter">     
       <param name="LevelMax" value="info"/>     
       <param name="LevelMin" value="info"/>     
      </filter>   
   </appender>  

    <!-- [组件日志APPENDER] -->  
   <appender name="COMPONENT-APPENDER"  class="org.apache.log4j.DailyRollingFileAppender">  
     <param name="File" value="${webapp.root}/logs/logistics-component.log" />  
     <param name="Append" value="true" />  
     <param name="encoding" value="gbk" />  
     <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />  
     <layout class="org.apache.log4j.PatternLayout">  
    <param name="ConversionPattern" value="%d{ISO8601} 耗时:%r [日志来自:%-40.40c{3} 日志类型: %-5p 日志内容:%m %l]%n" />  
     </layout>  
   </appender>  
  
     <!-- debug log -->  
     <!-- name指定的是包名,表示这个logger只记录com.wzw.controller下的所有日志 -->
   <logger name="com.*" additivity="true">  <!-- additivity 是否继承root -->
      <!-- <level value="${loggingLevel}" />   -->
      <level value="DEBUG"></level>  <!-- 现在级别 -->
      <appender-ref ref="DEBUG-APPENDER" />  
   </logger>  
   
     <!-- info log -->  
     <!-- name指定的是包名,这样只操作此包下的log -->
   <logger name="com.*" additivity="true">  
      <level value="INFO"></level>  
      <appender-ref ref="INFO-APPENDER" />  
      <appender-ref ref="console"/>
   </logger>  
   
   <!-- Root Logger -->  
   <!-- 所有logger的父类,记录所有的日志。 -->
   <root> 
       <level value="info"></level>  <!-- 限定记录等级 -->
           <appender-ref ref="DEFAULT-APPENDER" />  <!-- 调用记录方式 -->
       <appender-ref ref="console"/>
   </root>  
   
</log4j:configuration>  







web.xml 

   <!-- log4j配置,文件路径,因为是跟随项目启动 -->
    <context-param>     
      <param-name>log4jConfigLocation</param-name>     
      <param-value>classpath*:/log4j.xml</param-value>     
    </context-param>
     
<!-- 配置log4j.xml变量,如果需要动态的就使用下面方式,使用方法${name} --> 
  <context-param> 
      <param-name>webAppRootKey</param-name>  
      <param-value>webapp.root</param-value>  
  </context-param> 

  <context-param> 
     <param-name>loggingLevel</param-name> 
     <param-value>info</param-value> 
  </context-param> 
 <!-- 加载log4j配置文件 -->
   <listener>
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多