Log4 j 在系統記錄日誌方面功能很強大,但是,在配置文件路徑、日誌文件路徑及動態修改日誌記錄器級別等信息時卻不夠靈活,存在一些不足之處。好在spring 提供了相關功能彌補了 log4j 在這方面的不足 。接下來就來看一看 spring是如何實現這方面功能的。
spring 針對 log4j 提供瞭如下功能
:
1. 可以通過定期檢查配置文件的變化來動態的改變記錄級別和策略,不需要重啓Web應用。
web.xml 配置如下:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
2. 把
日誌 文件定在 web 應用目錄下的任何位置,
而不需要寫絕對路徑。
因爲系統把 web 應用 目錄的路徑壓入一個叫
webapp.root 的系統變量。這樣寫 log 文件路徑時不用寫絕對路徑了。當然也可以手動修改該系統變量。web.xml配置如下:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>stone.webapp.root</param-value>
</context-param>
注意 : 不同的應用不可以配置一樣的webAppRootKey值,否則會導致系統無法正常啓動。
如果將log4j中日誌輸出的文件路徑設置爲:
log4j.appender.logfile.File=../logs/mylog.log
#這樣是當直接啓動tomcat時會自動在tomcat的自有目錄logs下生成mylog.log(推薦)
如果將log4j中日誌輸出的文件路徑設置爲:
log4j.appender.logfile.File=mylog.log
#這樣是當直接啓動tomcat時會自動在tomcat的自有目錄bin下生成mylog.log(如果是在eclipse啓動tomcat則在eclipse目錄下生成mylog.log)
如果將log4j中日誌輸出的文件路徑設置爲:
log4j.appender.R.File=${catalina.base}/logs/mylog.log
#在tomcat裏運行可以這樣寫,會自動在tomcat的自有目錄logs下生mylog.log(推薦)3. 可以把 log4j.properties和其他properties一起放在 /WEB-INF/ ,而不是Class-Path。 web.xml配置如下:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
1 應用配置
1.1 w eb.xml
所有相關的 web.xml 配置信息如下:
<!-- log4j 配置 開始 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>600000</param-value>
</context-param>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>javass.webapp.root</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- log4j 配置 結束 -->
1.2 log4j.properties 配置
所有相關的 log4j.properties 配置信息如下:
#console log
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c - %m%n
#all log
log4j.appender.DAILY_ALL=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAILY_ALL.layout=org.apache.log4j.PatternLayout
log4j.appender.DAILY_ALL.layout.ConversionPattern="%p %d{yyyy-MM-dd HH:mm:ss} %-50.50c(%L) - %m%n
log4j.appender.DAILY_ALL.File=../logs/stone.log
#logger
#log4j.logger.org.springframework=INFO,CONSOLE
#log4j.logger.org.hibernate=INFO,CONSOLE
#log4j.logger.org.apache=INFO,CONSOLE
log4j.rootLogger=INFO,CONSOLE,DAILY_ALL