1. 程式人生 > >web.xml和log4j配置webAppRootKey 的問題

web.xml和log4j配置webAppRootKey 的問題

贈人玫瑰,手留餘香.人生最大的快樂不在於佔有什麼而在於追求什麼的過程.

在tomcat下部署兩個或多個專案時,web.xml檔案中最好定義webAppRootKey引數,如果不定義,將會預設為“webapp.root”,如下:

  1. <!-- 應用路徑  -->  
  2.     <context-param>  
  3.         <param-name>webAppRootKey</param-name>  
  4.         <param-value>webapp.root</param-value>  
  5.     </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程式碼
  1. <!-- 應用路徑  -->
  2. <context-param>
  3. <param-name>webAppRootKey</param-name>
  4. <param-value>webapp.root1</param-value>
  5. </context-param>
  1. <!-- 應用路徑  -->
  2.     <context-param
    >
  3.         <param-name>webAppRootKey</param-name>
  4.         <param-value>webapp.root2</param-value>
  5.     </context-param>

這樣就不會出現衝突了。


定義以後,在Web Container啟動時將把ROOT的絕對路徑寫到系統變數裡。
然後log4j的配置檔案裡就可以用${webName.root }來表示Web目錄的絕對路徑,把log檔案存放於webapp中。