2014年7月12日 星期六

maven學習 十 : log4j for spring

重點  :

  • Spring log機制需要  log4j  與  slf4j
  • 將  log4j.properties 設定檔,放於 WEB-INF 或是 classpath  MATA-INF,就能運作。
  • Spring 能由 org.springframework.web.util.Log4jConfigListener 設定時間掃描設定檔內容,
    做Run time時的設定變更。


pom.xml  

 <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>                           
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.7</version> 
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.1.2</version>
</dependency>



 log4j.properties 

#log4j設定檔,此檔只要放到WEB-INF或META-INF中,spring中即可運作
# Root logger option
log4j.rootLogger=INFO,BreadCrumbs
# Console輸出 與 輸出格式
log4j.appender.BreadCrumbs=org.apache.log4j.ConsoleAppender
log4j.appender.BreadCrumbs.Target=System.out
log4j.appender.BreadCrumbs.layout=org.apache.log4j.PatternLayout
log4j.appender.BreadCrumbs.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


如此在Spring就能運作。


延生功能 :

如果想要做執行期變更設定,可以再web.xml加入:

web.xml

<!-- Log4j -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!-- 半小時會掃描一次 log4j.properties檔,做熱部署-->
<context-param> 
   <param-name>log4jRefreshInterval</param-name> 
   <param-value>1800000</param-value> 
</context-param> 
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>