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應(yīng)用中為Spring配置log4j
Spring的做法是使用一個Servlet Listener,在Web Container啟動時把ROOT的絕對路徑寫到系統(tǒng)變量里,這樣log4j的配置文件里就可以用${myAppfuse.root}來表示剛剛設(shè)進(jìn)去的系統(tǒng)變量:log4j.appender.logfile.File=${myAppfuse.root}/logs/mylog.log
在Web.xml中配置語句如下:
<!--如果不設(shè),默認(rèn)為web.root,但最好設(shè)置,以免項目間沖突-->
<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>
配置好了以后我們就可以在當(dāng)前應(yīng)用的logs目錄下找到日志記錄文件:mylog.log
屬性log4jConfigLocation的值建議還是設(shè)置為:/WEB-INF/classes/log4j.properties,這樣我們在不啟動web應(yīng)用的時候,做一些測試這能夠正確地記錄日志信息。