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