web.xml和log4j配置webAppRootKey 的問題
贈人玫瑰,手留餘香.人生最大的快樂不在於佔有什麼而在於追求什麼的過程.
在tomcat下部署兩個或多個專案時,web.xml檔案中最好定義webAppRootKey引數,如果不定義,將會預設為“webapp.root”,如下:
- <!-- 應用路徑 -->
- <context-param>
- <param-name>webAppRootKey</param-name>
- <param-value>webapp.root</param-value>
- </context-param
最好報紙每個專案的引數值不同,以免引起專案衝突
嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [C:\Program Files (x86)\Apache Software Foundation\Tomcat 6.0\webapps\DRMProject\] instead of [C:\Program Files (x86)\Apache Software Foundation\Tomcat
6.0\webapps\DRMSn\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
對多個專案要對webAppRootKey進行配置,這裡主要是讓log能將日誌寫到對應專案根目錄下,如我配置這兩個專案的webAppRootKey為
Xml程式碼- <!-- 應用路徑 -->
- <context-param>
- <param-name>webAppRootKey</param-name>
- <param-value>webapp.root1</param-value>
- </context-param>
- <!-- 應用路徑 -->
-
<context-param
- <param-name>webAppRootKey</param-name>
- <param-value>webapp.root2</param-value>
- </context-param>
這樣就不會出現衝突了。
定義以後,在Web Container啟動時將把ROOT的絕對路徑寫到系統變數裡。
然後log4j的配置檔案裡就可以用${webName.root }來表示Web目錄的絕對路徑,把log檔案存放於webapp中。