Log4j 配置 的問(wèn)題
Web Server : Tomcat 5.0.30Spring : 1.2.8
為了讓W(xué)eb項(xiàng)目中的Spring 使用Log4j做如下配置:
1、在web.xml中添加如下內(nèi)容:
<!--如果不定義webAppRootKey參數(shù),那么webAppRootKey就是缺省的"webapp.root"。但最好設(shè)置,以免項(xiàng)目之間的名稱沖突。
定義以后,在Web Container啟動(dòng)時(shí)將把ROOT的絕對(duì)路徑寫(xiě)到系統(tǒng)變量里。
然后log4j的配置文件里就可以用${webName.root }來(lái)表示W(wǎng)eb目錄的絕對(duì)路徑,把log文件存放于webapp中。
此參數(shù)用于后面的“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默認(rèn)刷新Log4j配置文件的間隔,單位為millisecond-->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!-- Web 項(xiàng)目 Spring 加載 Log4j 的監(jiān)聽(tīng) -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
2、編寫(xiě)log4j.properties屬性文件,使用web.xml配置的全局變量:
log4j.appender.A_default.File=${webName.root}/WEB-INF/logs/log4j.log
詳細(xì)內(nèi)容略。
問(wèn)題:
如上配置后,log4j.properties屬性文件的存放位置,應(yīng)在Web項(xiàng)目中的WEB-INF下,而不是默認(rèn)的/WEB-INF/classes下。
可在做spring 的單元測(cè)試時(shí),默認(rèn)讀取classes下的log4j.properties,不知該問(wèn)題如何解決?
如果把log4j.properties存放在/WEB-INF/classes/log4j.properties下的話,會(huì)在啟動(dòng)Tomcat時(shí)報(bào)錯(cuò):
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \WEB-INF\logs\log4j.log (系統(tǒng)找不到指定的路徑。)
可在\WEB-INF\logs\log4j.log 卻可以看到log4j.log文件已存在Spring的日志輸出信息。
分析可能是其他的類在加載log4j.properties時(shí),無(wú)法讀取${webName.root}變量的值。
posted on 2006-07-27 13:25 wml 閱讀(8243) 評(píng)論(6) 編輯 收藏 所屬分類: 技術(shù)隨筆