当工程中引入的jar包中含有log4j.xml或log4j.properties时,可能出现已配置的log4j被覆盖的情况,使配置的log4j失效。要确认是否被覆盖,首先要检查工程启动时读取的log4j配置文件的路径,可以在MyEclipse的server下找到自己配置的服务,在jdk启动项参数中加上虚拟机参数: -Dlog4j.debug
启动的时候就可以看到log4j配置文件的加载路径。当发现确实被覆盖之后,可以通过在web.xml中指定log4j的读取路径来解决这个问题,配置如下:
<!-- log4j避免被覆盖 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>