1. 程式人生 > >Spring整合Log4j和Slf4j

Spring整合Log4j和Slf4j

Log4j的整合

Spring專案中整合Log4j
1. 下載好log4j的jar包(例如:log4j-1.2.11.jar)
2. web.xml

<!--log4j配置檔案載入-->  
<context-param>      
   <param-name>log4jConfigLocation</param-name>      
   <param-value>/WEB-INF/log4j.properties</param-value>      
</context-param>  
<!--啟動一個watchdog執行緒每1800秒掃描一下log4j配置檔案的變化--> 
<!-- log4j 配置掃描重新整理間隔 可以不用 --> 
<context-param>      
   <param-name>log4jRefreshInterval</param-name>      
   <param-value>1800000</param-value>      
</context-param>   

<!--spring log4j監聽器-->  
<listener>      
   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>      
</listener> 

只配置listener也可以
3. log4j.properties
日誌的主配置檔案

log4j.rootLogger=info,stdout,debug,error    
log4j.logger.org.springframework=info
#log4j.logger.org.springframework.web=debug
log4j.appender.stdout=org.apache.log4j.ConsoleAppender    
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout    
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n    

log4j.logger.info=info    
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender    
log4j.appender.info.layout=org.apache.log4j.PatternLayout    
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n    
log4j.appender.info.datePattern='.'yyyy-MM-dd    
log4j.appender.info.Threshold = INFO    
log4j.appender.info.append=true    
log4j.appender.info.File=${catalina.home}/logs/log4j/info.log
log4j.appender.warn.File=${catalina.home}/logs/log4j/warn.log    

log4j.logger.debug=debug    
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender    
log4j.appender.debug.layout=org.apache.log4j.PatternLayout    
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n    
log4j.appender.debug.datePattern='.'yyyy-MM-dd    
log4j.appender.debug.Threshold = DEBUG    
log4j.appender.debug.append=true    
log4j.appender.debug.File=${catalina.home}/logs/log4j/debug.log

log4j.logger.warn=warn    
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender    
log4j.appender.warn.layout=org.apache.log4j.PatternLayout    
log4j.appender.warn.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n    
log4j.appender.warn.datePattern='.'yyyy-MM-dd    
log4j.appender.warn.Threshold = DEBUG    
log4j.appender.warn.append=true    

log4j.logger.error=error    
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender    
log4j.appender.error.layout=org.apache.log4j.PatternLayout    
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n    
log4j.appender.error.datePattern='.'yyyy-MM-dd    
log4j.appender.error.Threshold = ERROR    
log4j.appender.error.append=true    
log4j.appender.error.File=${catalina.home}/logs/log4j/error.log
  1. 程式碼中寫入日

    private static final Logger logger = LoggerFactory.getLogger(XXX.class);
    logger.info(“XXXX”);
    logger.warn(“XXXX”);
    logger.error(“XXXX”);

Slf4j的整合

Slf4j不是一個真正的日誌實現,而是一個抽象層,它允許我們在後臺使用任意一個日誌類庫。所以以後更換為其它日誌工具時,只要修改配置檔案,不用修改程式碼,所以開源框架常用到Slf4j。
spring 4預設是不依賴slf4j的,只依賴common logging.
整合好Log4j之後就可直接使用Slf4j了
1. 加入slf4j的jar包
2. 配置同上Log4j的配置

即整合好Log4j之後就可直接使用Slf4j了。
使用:

import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;
...
private static final Logger logger = LoggerFactory.getLogger(User.class);