2013-10-31 34 views
1

我使用Websphere7部署EAR文件中的文件。 EAR文件包含兩個不同的應用程序戰爭文件,如App1,App2。Log4j的問題與瘦WAR:日誌合併到一個日誌文件,而不是寫入到單獨的Web應用程序登錄

我正在構建我的應用程序EAR文件,使用maven-ear-plugin作爲瘦小的戰爭。

. 
|-- META-INF 
| `-- application.xml 
|-- lib 
| -- jar1 
| -- jar2 
| -- jar3 
| -- log4j.jar 
|-- App1-1.0.0.war 
|  -- /WEB-INF/classes/App1-log4j.xml  |  
`-- App2-1.0.0.war 
|  -- /WEB-INF/classes/App2-log4j.xml 

不同的戰爭

App1-1.0.0.war web.xml配置:在web.xml

<context-param> 
      <param-name>log4jExposeWebAppRoot</param-name> 
      <param-value>false</param-value> 
    </context-param> 

    <context-param> 
     <param-name>log4jConfigLocation</param-name> 
     <param-value>/WEB-INF/classes/App1-log4j.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

App2-1.0.0.war:在web.xml

<context-param> 
       <param-name>log4jExposeWebAppRoot</param-name> 
       <param-value>false</param-value> 
     </context-param> 

     <context-param> 
      <param-name>log4jConfigLocation</param-name> 
      <param-value>/WEB-INF/classes/App2-log4j.xml</param-value> 
     </context-param> 

     <listener> 
      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
     </listener> 

我正面臨着與日誌有關的問題。在應用程序啓動時,可以正確創建兩個不同的日誌文件(app1.log和app2.log)。但是,不同應用程序的日誌將記錄單個日誌文件。

我錯過了什麼?有什麼建議麼?

回答

0

最後,我已經得到了解決這個問題的方案。要獲得答案,請參閱下面的鏈接。

在使用這一解決方案,我觀察到,在所有類的靜態記錄儀變量是導致日誌合併問題。 Here是關於這個問題的很好的解釋。讀完這些之後,我必須將所有靜態記錄器轉換爲類級別的實例變量。

私有靜態最後記錄器記錄儀= Logger.getLogger(MyApp.class的);

私人最終記錄器記錄儀= Logger.getLogger(MyApp.class的);

按照上述修改後,日誌框架開始爲我工作的罰款。現在,我可以看到我所有的日誌文件中包含的Web應用程序特定的日誌。

如果你想在這個問題上詳細的分析。您可以參考這個post

相關問題