2016-03-07 24 views
0

我有一個在同一位置的CATALINA_HOMECATALINA_BASE的tomcat安裝。這個tomcat只託管一個solr實例。Tomcat7,Log4j容器和WebApp級別的配置

我想要做的第一件事就是生成log4j日誌記錄到solr的單獨文件,比如我在${catalina.base}/logs/solr.log,我通過在${CATALINA_HOME}/webapps/solr/WEB-INF/classes/中添加log4j.properties來實現。

然後我想配置tomcat本身來生成log4j輸出,然後按照log4j的apache guide。這對catalina有效,但似乎覆蓋了我之前配置的solr和它正在記錄的獨立文件,不再記錄。

我試圖刪除WEB-INF/classes目錄,並將appender複製到tomcat log4j文件,並在最後添加了這個log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/solr] =INFO, SOLR,但仍然無法爲solr本身獲得單獨的文件日誌記錄。

這是因爲類加載層次的順序嗎?如果是的話爲什麼?通常應該可以在較低級別上覆蓋配置。

是否有另一種可能的方式來爲webapp單獨配置log4j配置?

回答

0

我已經設法解決了我自己的問題,所以這裏是如果有人需要它的答案。

要啓用您需要下載並webapps/solr/WEB-INF/lib下複製下面的罐子log4j的Solr的slf4j-log4j12-1.7.6.jarslf4j-api-1.7.6.jarlog4j-1.2.17.jar如果存在刪除任何slf4j-jdk罐子。然後將您的log4j.properties文件添加到webapps/solr/WEB-INF/classes下,並創建目錄classes(如果不存在)。
在我的情況下,我錯過了slf4j罐子,它正在從tomcat容器中加載罐子,這反過來並沒有解決classes/log4j.properties。將它們添加到solr後,解決了正確的log4j.properties

爲Tomcat的log4j的配置我也跟着在同一時間log4j的部分here

如果你想寫從Solr的到catalina.out和一個單獨的文件只是在classes/log4j.properties增加兩個附加目的地。

我沒有設法配置log4j appender來使用log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/solr] =INFO, SOLR從tomcats log4j.properties控制特定webapp(在我的情況下爲solr)的log4j輸出。所以如果有人有這種配置的經驗,將很高興知道如何。