springMVC+log4j 日誌記錄詳細配置

springmvc+log4j.xml操作日誌記錄,詳細配置

原文地址:http://www.cnblogs.com/v-weiwang/p/4814050.html

參考地址:http://rockelixir.iteye.com/blog/1902352


需要導入包:

 log包:log4j-12.17.jar

第一步:web.xml配置

  1. <!– log4j配置,文件路徑,因爲是跟隨項目啓動 –>  
  2. <context-param>  
  3.     <param-name>log4jConfigLocation</param-name>  
  4.     <param-value>/WEB-INF/log4j.xml</param-value>  
  5. </context-param>  
  6. <!– 配置log4j.xml變量,如果需要動態的就使用下面方式,使用方法${name} –>  
  7. <context-param>  
  8.     <param-name>controller</param-name>  
  9.     <param-value>controller-log</param-value>  
  10. </context-param>  
  11.   
  12. <context-param>  
  13.     <param-name>loggingLevel</param-name>  
  14.     <param-value>info</param-value>  
  15. </context-param>  
  16. <!– 加載log4j配置文件 –>  
  17. <listener>  
  18.     <listener-class>org.springframework.web.util.Log4jConfigListener  
  19.     </listener-class>  
  20. </listener>  
<!-- log4j配置,文件路徑,因爲是跟隨項目啓動 -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<!-- 配置log4j.xml變量,如果需要動態的就使用下面方式,使用方法${name} -->
<context-param>
    <param-name>controller</param-name>
    <param-value>controller-log</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>

第二步log4j.xml配置

(配置文件可以有兩種方式,一種是xml,一種是properties。個人比較喜歡xml,一目瞭然)

先講解一下核心對象:

logger對象: Logger對象負責捕獲日誌信息及它們存儲在一個空間的層次結構。

Appender對象:下位層提供Appender對象。Appender對象負責發佈日誌信息,以不同的首選目的地,如數據庫,文件,控制檯,UNIX系統日誌等。

layout對象: 該層提供其用於格式化不同風格的日誌信息的對象。佈局層提供支持Appender對象到發佈日誌信息之前。

打個比方:logger是個情報站,負責收集他 所在地方(用name=”xxx包”指定)下的所有信息。appender是發送出去的方式,如寫信(FileAppender)、電報(SMTPAppender)等多種。layout就是發送內容以什麼格式書寫,如自定義格式(PatternLayout),html(HTMLLayout)格式。


  1. <?xml version=“1.0” encoding=“UTF-8”?>      
  2. <!DOCTYPE log4j:configuration PUBLIC ”-//APACHE//DTD LOG4J 1.2//EN” “log4j.dtd”>    
  3. <log4j:configuration xmlns:log4j=“http://jakarta.apache.org/log4j/”>  
  4. <!– 可以配置多個appender來對應不同的輸出,如文件輸出,sql輸出,控制檯輸出,郵件輸出等 –>    
  5.   <!– [控制檯STDOUT] 不同的輸出類型對應着不同的calss,如控制檯輸出class對應着 org.apache.log4j.ConsoleAppender –>    
  6.   <appender name=“console” class=“org.apache.log4j.ConsoleAppender”>  <!– name提供給logger或者root調用 –>  
  7.      <param name=“encoding” value=“GBK” />  <!– 保存字符集 –>  
  8.      <param name=“target” value=“System.out” />  <!– 輸出到控制檯 –>  
  9.      <layout class=“org.apache.log4j.PatternLayout”> <!– loyout表示輸出方式,可以多種,class值區分,PatternLayout表示自定義格式 –>   
  10.        <param name=“ConversionPattern” value=“%d{ISO8601} 耗時:%r [日誌來自:%-40.40c{3} 日誌類型: %-5p 日誌內容:%m]%n” />  <!– 輸出格式,後面解釋 –>  
  11.      </layout>    
  12.       <!–filter過濾器設置輸出的級別:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF  
  13.           所有下面輸出的是debug到warn不會有error和fatal  
  14.       –>    
  15.         <filter class=“org.apache.log4j.varia.LevelRangeFilter”>    
  16.             <param name=“levelMin” value=“debug” />    
  17.             <param name=“levelMax” value=“warn” />    
  18.             <param name=“AcceptOnMatch” value=“true” />  <!– 答案:http://bbs.csdn.net/topics/350195913 –>  
  19.         </filter>    
  20.   </appender>    
  21.     
  22.   <!– [公共Appender] 這個class表示輸入到文件,並且按日期生成新文件–>    
  23.   <appender name=“DEFAULT-APPENDER” class=“org.apache.log4j.DailyRollingFileAppender”>    
  24.      <param name=“File” value={webapp.root}/logs/common-default.log"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp; {webapp.root}項目根路徑,自動獲得,不用配置,可自己在web.xml中配置 –>  
  25.      <param name=“Append” value=“true” />  <!– 是否項目重啓繼續保存之前日誌 –>  
  26.      <param name=“encoding” value=“GBK” />    
  27.      <param name=“threshold” value=“all” /> <!– 記錄所有類型日誌,記錄它和比它等級高的日誌all<debug –>  
  28.      <param name=“DatePattern” value=“’.’yyyy-MM-dd’.log’” />  <!– 日期格式  例子:common-default.log.2015-09-17.log–>  
  29.      <layout class=“org.apache.log4j.PatternLayout”>  <!– 輸出方式 –>  
  30.     <param name=“ConversionPattern” value=“%d{ISO8601} 耗時:%r [日誌來自:%-40.40c{3} 日誌類型: %-5p 日誌內容:%m]%n” />    
  31.      </layout>    
  32.    </appender>    
  33.     
  34.    <!– [debug日誌APPENDER] –>    
  35.    <appender name=“DEBUG-APPENDER” class=“org.apache.log4j.DailyRollingFileAppender”>    
  36.      <param name=“File” value={webapp.root}/logs/controller/debug-log.log"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"Append"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"encoding"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"GBK"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"DatePattern"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"'.'yyyy-MM-dd'.log'"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">layout</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.apache.log4j.PatternLayout"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"ConversionPattern"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"%d{ISO8601}&nbsp;耗時:%r&nbsp;[日誌來自:%-40.40c{3}&nbsp;日誌類型:&nbsp;%-5p&nbsp;日誌內容:%m]%n"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">layout</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">appender</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;[info日誌APPENDER]&nbsp;--&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">appender</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"INFO-APPENDER"</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.apache.log4j.DailyRollingFileAppender"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"File"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">" {webapp.root}/logs/controller/info-log.log” />    
  37.      <param name=“Append” value=“false” />    
  38.      <param name=“encoding” value=“GBK” />  
  39.      <param name=“DatePattern” value=“’.’yyyy-MM-dd’.log’” />    
  40.      <layout class=“org.apache.log4j.PatternLayout”>    
  41.     <param name=“ConversionPattern” value=“%d{ISO8601} 耗時:%r [日誌來自:%-40.40c{3} 日誌類型: %-5p 日誌內容:%m]%n” />    
  42.      </layout>   
  43.      <!– 我只想記錄info日誌,就做如下設置 –>  
  44.      <filter class=“org.apache.log4j.varia.LevelRangeFilter”>       
  45.        <param name=“LevelMax” value=“info”/>       
  46.        <param name=“LevelMin” value=“info”/>       
  47.       </filter>     
  48.    </appender>    
  49.   
  50.     <!– [組件日誌APPENDER] –>    
  51.    <appender name=“COMPONENT-APPENDER”    
  52. class=“org.apache.log4j.DailyRollingFileAppender”>    
  53.      <param name=“File” value={webapp.root}/logs/logistics-component.log"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"Append"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"true"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"encoding"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"GBK"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"DatePattern"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"'.'yyyy-MM-dd'.log'"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">layout</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.apache.log4j.PatternLayout"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">param</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"ConversionPattern"</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">"%d{ISO8601}&nbsp;耗時:%r&nbsp;[日誌來自:%-40.40c{3}&nbsp;日誌類型:&nbsp;%-5p&nbsp;日誌內容:%m]%n"</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">layout</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">appender</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;debug&nbsp;log&nbsp;--&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;name指定的是包名,表示這個logger只記錄com.wzw.controller下的所有日誌&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">logger</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"com.wzw.controller"</span><span>&nbsp;</span><span class="attribute">additivity</span><span>=</span><span class="attribute-value">"true"</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;additivity&nbsp;是否繼承root&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comments">&lt;!--&nbsp;&lt;level&nbsp;value=" {loggingLevel}” />   –>  
  54.       <level value=“DEBUG”></level>  <!– 現在級別 –>  
  55.       <appender-ref ref=“DEBUG-APPENDER” />    
  56.    </logger>    
  57.      
  58.      <!– info log –>    
  59.      <!– name指定的是包名,這樣只操作此包下的log –>  
  60.    <logger name=“com.wzw.controller” additivity=“true”>    
  61.       <level value=“INFO”></level>    
  62.       <appender-ref ref=“INFO-APPENDER” />    
  63.       <appender-ref ref=“console”/>  
  64.    </logger>    
  65.      
  66.    <!– Root Logger –>    
  67.    <!– 所有logger的父類,記錄所有的日誌。 –>  
  68.    <root>   
  69.        <level value=“ALL”></level>  <!– 限定記錄等級 –>  
  70.        <appender-ref ref=“DEFAULT-APPENDER” />  <!– 調用記錄方式 –>  
  71.        <appender-ref ref=“console”/>  
  72.    </root>    
  73.      
  74. </log4j:configuration>  
<?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.apache.org/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]%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="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" /&gt;  &lt;!-- ${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]%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="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]%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]%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]%n" />  
     </layout>  
   </appender>  

     <!-- debug log -->  
     <!-- name指定的是包名,表示這個logger只記錄com.wzw.controller下的所有日誌 -->
   <logger name="com.wzw.controller" additivity="true">  <!-- additivity 是否繼承root -->
      <!-- <level value="${loggingLevel}" />   -->
      <level value="DEBUG"></level>  <!-- 現在級別 -->
      <appender-ref ref="DEBUG-APPENDER" />  
   </logger>  

     <!-- info log -->  
     <!-- name指定的是包名,這樣只操作此包下的log -->
   <logger name="com.wzw.controller" additivity="true">  
      <level value="INFO"></level>  
      <appender-ref ref="INFO-APPENDER" />  
      <appender-ref ref="console"/>
   </logger>  

   <!-- Root Logger -->  
   <!-- 所有logger的父類,記錄所有的日誌。 -->
   <root> 
       <level value="ALL"></level>  <!-- 限定記錄等級 -->
       <appender-ref ref="DEFAULT-APPENDER" />  <!-- 調用記錄方式 -->
       <appender-ref ref="console"/>
   </root>  

</log4j:configuration>

運行就能看到common-default.log裏面有操作日誌

自己輸出日誌:

我controller包下某各類中:

  1. package com.wzw.controller;  
  2. import org.apache.logging.log4j.LogManager;  
  3. import org.apache.logging.log4j.Logger;  
  4. import org.springframework.stereotype.Controller;  
  5. import org.springframework.web.bind.annotation.ExceptionHandler;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. @Controller  
  8. @RequestMapping(“/account”)  
  9. public class AccountController {  
  10.     private static Logger logger =LoggerFactory.getLogger(AccountController.class);  
  11. @ResponseBody  
  12.     @RequestMapping(“/login”)  
  13.     public String login(HttpSession session){  
  14.         logger.info(“請求登錄”);  
  15.         logger.debug(“debug”);  
  16.         logger.warn(“warn”);  
  17. }  
  18. }  
package com.wzw.controller;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/account")
public class AccountController {
    private static Logger logger =LoggerFactory.getLogger(AccountController.class);
@ResponseBody
    @RequestMapping("/login")
    public String login(HttpSession session){
        logger.info("請求登錄");
        logger.debug("debug");
        logger.warn("warn");
}
}

訪問這個controller,就會記錄日誌,因爲有log4j中有兩個logger配置記錄controller包下的日誌,所以輸出到兩個logger下<appender-ref>(輸出方式)。

appender選項:

  • AppenderSkeleton

  • AsyncAppender

  • ConsoleAppender

  • DailyRollingFileAppender

  • ExternallyRolledFileAppender

  • FileAppender

  • JDBCAppender

  • JMSAppender

  • LF5Appender

  • NTEventLogAppender

  • NullAppender

  • RollingFileAppender

  • SMTPAppender

  • SocketAppender

  • SocketHubAppender

  • SyslogAppender

  • TelnetAppender

  • WriterAppender

 layout選項:

  • DateLayout
  • HTMLLayout
  • PatternLayout
  • SimpleLayout
  • XMLLayout

 

模式轉換字符:

下表說明了以上模式使用的字符和所有其他字符,可以在自定義模式中使用:

轉換字符 表示的意思
c 用於輸出的記錄事件的類別。例如,對於類別名稱”a.b.c” 模式  %c{2} 會輸出 “b.c”
C 用於輸出呼叫者發出日誌請求的完全限定類名。例如,對於類名 “org.apache.xyz.SomeClass”, 模式 %C{1} 會輸出 “SomeClass”.
d 用於輸出的記錄事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.
F 用於輸出被髮出日誌記錄請求,其中的文件名
l 用於將產生的日誌事件調用者輸出位置信息
L 用於輸出從被髮出日誌記錄請求的行號
m 用於輸出使用日誌事件相關聯的應用程序提供的消息
M 用於輸出發出日誌請求所在的方法名稱
n 輸出平臺相關的行分隔符或文字
p 用於輸出的記錄事件的優先級
r 用於輸出毫秒從佈局的結構經過直到創建日誌記錄事件的數目
t 用於輸出生成的日誌記錄事件的線程的名稱
x 用於與產生該日誌事件的線程相關聯輸出的NDC(嵌套診斷上下文)
X 在X轉換字符後面是鍵爲的MDC。例如  X{clientIP} 將打印存儲在MDC對鍵clientIP的信息
% 文字百分號 %%將打印%標誌

格式修飾符:

默認情況下,相關資料原樣輸出。然而,隨着格式修飾符的幫助下,可以改變最小字段寬度,最大字段寬度和對齊。

下表涵蓋了各種各樣的修飾符的情況:

 

Format modifier left justify minimum width maximum width 註釋
%20c false 20 none 用空格左墊,如果類別名稱少於20個字符長
%-20c true 20 none 用空格右墊,如果類別名稱少於20個字符長
%.30c NA none 30 從開始截斷,如果類別名稱超過30個字符長
%20.30c false 20 30 用空格左側墊,如果類別名稱短於20個字符。但是,如果類別名稱長度超過30個字符,那麼從開始截斷。
%-20.30c true 20 30 用空格右側墊,如果類別名稱短於20個字符。但是,如果類別名稱長度超過30個字符,那麼從開始截斷。
標籤


document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000) var fromjs = ("#fromjs");
    if (fromjs.length > 0) {
("#fromjs .markdown_views pre").addClass("prettyprint"); prettyPrint(); ('pre.prettyprint code').each(function () {
                var lines =
(this).text().split('\n').length; var numbering= ('
    ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章