Spring配置log4j

lzgsea發表於2018-04-09

一、新增log4j依賴包

官網下載地址:http://logging.apache.org/log4j/2.x/download.html

maven專案配置

<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

二、編寫log4j.properties 配置檔案

log4j.rootLogger=DEBUG,A,CONSOLE
log4j.addivity.org.apache=false

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=Trace
log4j.appender.CONSOLE.layout.ConversionPattern=[boss_sys] %d{yyyy-MM-dd HH\:mm\:ss.SSS} -%-4r [%t] %-5p  %x - %m%n
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout


log4j.appender.A=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.A.File=${catalina.home}/logs/boss_log/boss
log4j.appender.A.DatePattern=yyyy-MM-dd'.log'
log4j.appender.A.layout=org.apache.log4j.PatternLayout  
log4j.appender.A.layout.ConversionPattern=[boss_sys]  %d{yyyy-MM-dd HH\:mm\:ss} %5p %c{1}\:%L \: %m%n

三、Spring配置log4j

如果Spring是java專案,只要將log4j.properties 配置檔案放到src目錄下,如果是java maven專案log4j.properties配置檔案放到src/main/java目錄下。

但在web專案中,我們需要再web.xml中配置,web.xml配置log4j內容如下:

<!-- 載入log4j的配置檔案log4j.properties  -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

<!-- 設定重新整理log4j日誌配置檔案的時間間隔,這裡設定為10s -->
<context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>10000</param-value>
</context-param>

<!-- 載入Spring框架中的log4j監聽器Log4jConfigListener -->
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<!-- 
	為避免專案間衝突,定義唯一的 webAppRootKey。
	webAppRootKey指定一個專案路徑的系統變數, 相同tomcat中,不同專案該值不能一樣
	該值指向的是tomcat中專案路徑,例如:D:\tomcat 7.0\webapps\web\
	通過System.getProperty("webapp.root")可以獲取
	log4j.properties通過該值可以指定日誌檔案路徑到專案下
	例如:log4j.appender.file.File=${webapp.root}/WEB-INF/logs/sample.log
	相當於:D:\tomcat 7.0\webapps\web\WEB-INF\logs\sample.log
	
	Spring通過org.springframework.web.util.WebAppRootListener這個監聽器來載入執行時的專案路徑,將該路徑賦值到該引數。
	但是如果在web.xml中已經配置了 org.springframework.web.util.Log4jConfigListener這個監聽器,
	則不需要配置WebAppRootListener了。因為Log4jConfigListener已經包含了WebAppRootListener的功能
	-->
<context-param>
	<param-name>webAppRootKey</param-name>
	<param-value>webapp.root</param-value>
</context-param>
            

相關文章