1.在classpath的根目录下面不放置log4j.properties
在用junit本地测试的时候会提示:

log4j:WARN No appenders could be found for logger (org.springframework.beans.factory.access.SingletonBeanFactoryLocator).
log4j:WARN Please initialize the log4j system properly.

然后我们是看不到spring加载bean的配置信息的。
在classpath路径下加入:log4j.properties,则能够显示bean的加载信息

2. 在web应用中为Spring配置log4j
Spring的做法是使用一个Servlet Listener,在Web Container启动时把ROOT的绝对路径写到系统变量里,这样log4j的配置文件里就可以用${myAppfuse.root}来表示刚刚设进去的系统变量:log4j.appender.logfile.File=${myAppfuse.root}/logs/mylog.log
在Web.xml中配置语句如下:

 

<!-- 如果不设,默认为web.root,但最好设置,以免项目间冲突 -->
< context-param >      
 
< param-name > webAppRootKey </ param-name >       
 
< param-value > myappfuse.root </ param-value >  
</ context-param >
< 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 >  
<!-- 这里配置了一个listener,也可以配置servlet: -->
< servlet >
  
< servlet-name > log4j </ servlet-name >
  
< servlet-class >
   org.springframework.web.util.Log4jConfigServlet
  
</ servlet-class >
  
< load-on-startup > 1 </ load-on-startup >
 
</ servlet >


配置好了以后我们就可以在当前应用的logs目录下找到日志记录文件:mylog.log
属性log4jConfigLocation的值建议还是设置为:/WEB-INF/classes/log4j.properties,这样我们在不启动web应用的时候,做一些测试这能够正确地记录日志信息。