2009-10-02 19 views
0

是否有正確的方式來使用Log4j記錄器和Common ClassLoader,而不是基於Web-App的ClassLoader,即對所有已部署的Web應用程序只使用一個log4j.jar? 當我在commons lib目錄中放置log4j.jar時,log4j會爲任何應用程序獲取第一個loj4j.properties,並僅使用它。所有其他loj4j.properties(其他應用程序)都被忽略。有沒有辦法說log4j爲每個應用程序返回單獨的日誌工廠及其屬性?Tomcat6 webapps之間的單個Log4j

回答

1

不是我認爲你的意思,因爲每個webapp的記錄器應該完全獨立於其他web應用程序中的記錄器。因爲日誌記錄庫是單例,所以只能在單獨的類加載器(即webapp類加載器)處理它們時才能完成。

另外請注意,一般情況下(儘管可能不適用於您),不同的webapps有不同的生命週期,這意味着Tomcat可能必須在webapp B的同一時間使用一個版本的log4j來支持webapp A,它使用不同版本的log4j。

+0

是的,我完全同意除了一件事。我在一個tomcat實例中託管了大約60個webapps,當每個webapp加載單獨的log4j實例時 - 我遇到了PermGen空間問題。服務器只有512Mb的內存:( – 2009-10-05 16:22:01

相關問題