spring對log4j的錦上添花

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  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章