转载后整理,转自:http://www.educity.cn/wenda/115510.html
Log4j配置webAppRootKey
为了让Web项目中的Spring 使用Log4j做如下配置:
1、在web.xml中添加如下内容:
<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"。但最好设置,以免项目之间的名称冲突。 定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。 然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。 此参数用于后面的“Log4jConfigListener”--> <context-param> <param-name>webAppRootKey</param-name> <param-value>webName.root</param-value> </context-param> <!--由Sprng载入的Log4j配置文件位置--> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond--> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <!-- Web 项目 Spring 加载 Log4j 的监听 --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
2、编写log4j.properties属性文件,使用web.xml配置的全局变量:
log4j.appender.A_default.File=${webName.root}/WEB-INF/logs/log4j.log
详细内容略。
--------------------------------------------------------------------
log4j是很好用的一个工具,在目前的WEB项目中经常使用。配上jakarta的common logging和Eclipse的插件Log4E很好用。
不过还是有几个不太方便的地方:
1 Log4j的配置文件修改了之后必须重启才能生效
2 配置文件只能放在WEB-INF/classes
Spring对于Log4j有了更好的增强,配置文件修改后不需要重启,不用再放到WEB-INF/classes目录下。
下面是要在web.xml中增加的配置参数。
<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"--> <context-param> <param-name>webAppRootKey</param-name> <param-value>WebConsole2.root</param-value> </context-param> <!--由Sprng载入的Log4j配置文件位置--> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.xml</param-value> </context-param> <!--Spring默认刷新Log4j配置文件的间隔,单位为毫秒--> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <!--Spring log4j Config loader--> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
第一个参数webAppRootKey如果只有一个应用用了Spring对Log4J的增强,则可以不用设置;否则一定要进行设置。
这个以前也不知道,也是今天在同时发布两个应用的时候出了问题后Google发现的。
相对应的log4j的配置文件(用的xml格式):
< xml version="1.0" encoding="UTF-8" > <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j=""> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%p --- %C{1}.%M(%L) | %m%n"/> </layout> </appender> <appender name="LOG_FILE" class="org.apache.log4j.RollingFileAppender"> <param name="Threshold" value="ALL"/> <param name="File" value="${WebConsole2.root}/WEB-INF/logs/WebConsole2.log"/> <param name="Append" value="true"/> <param name="MaxFileSize" value="500KB"/> <param name="MaxBackupIndex" value="1"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> </layout> </appender> <logger name="org.apache.struts"> <level value="warn"/> </logger> <logger name="org.springframework"> <level value="warn"/> </logger> <logger name="com.rb.webconsole"> <level value="all"/> </logger> <root> <level value="off"/> <appender-ref ref="CONSOLE"/> <appender-ref ref="LOG_FILE"/> </root> </log4j:configuration>
注意现在log文件的位置在/WEB-INF/logs目录下了。