Tomcat7,Log4j容器和WebApp级别配置

时间:2016-03-07 17:41:55

标签: tomcat solr log4j tomcat7

我在同一位置安装了CATALINA_HOMECATALINA_BASE的tomcat。这个tomcat只承载一个solr实例。

我想要做的第一件事就是生成log4j日志记录到solr的单独文件,让我们说${catalina.base}/logs/solr.log,我设法通过在${CATALINA_HOME}/webapps/solr/WEB-INF/classes/中添加log4j.properties来实现。

然后我想配置tomcat本身来生成log4j输出,并遵循apache guide来获取log4j。这适用于catalina,但似乎覆盖了我以前的solr配置和它正在记录的单独文件,不再记录。

我尝试删除WEB-INF/classes目录并将appender复制到tomcat log4j文件中,并在最后添加了此log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/solr] =INFO, SOLR但仍无法获取solr本身的单独文件记录。

这是否因为类加载层次结构的顺序而发生?如果是的话为什么?通常应该可以在较低级别覆盖配置。

是否有其他可能的方法为webapp配置单独的log4j?

1 个答案:

答案 0 :(得分:0)

我设法解决了我自己的问题,所以如果有人需要它,这就是答案。

要为solr启用log4j,您需要在webapps/solr/WEB-INF/lib以下的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容器加载jar,而容器又没有解析classes/log4j.properties。将它们添加到solr后,正确的log4j.properties已解决。

对于tomcat log4j配置,我遵循log4j部分here

如果你想同时从solr写到catalina.out和一个单独的文件,只需在classes/log4j.properties中添加两个appender。

我没有设法使用log4j.properties从tomcats log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/solr] =INFO, SOLR配置log4j appender来控制特定webapp(在我的案例中为solr)的log4j输出。因此,如果有人有这种配置的经验,那么很高兴知道如何使用。