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