如何修复 Tomcat 缺少 SLF4j 日志 jar?

如何修复 Tomcat 缺少 SLF4j 日志 jar?

尝试使用 Tomcat 启动新应用程序时出现此错误:

Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.apache.org/solr/SolrLogging

我没有使用 Jetty,而是使用 Tomcat,所以我的安装说明略有不同。

我检查了链接并广泛阅读了这方面内容 - 似乎库需要进入 $CATALINA_BASE/lib - 在我的情况下应该是:

/usr/local/easy/share/easy-tomcat7/lib

然而,我把图书馆放在那里——没有骰子。

这是 lib 目录:

./                        commons-io-2.3.jar        jsp-api.jar                 slf4j-api-1.7.6.jar      tomcat-juli-adapters.jar
../                       el-api.jar                jul-to-slf4j-1.7.7.jar      slf4j-api-1.7.7.jar      tomcat-juli.jar
annotations-api.jar       httpclient-4.3.1.jar      log4j.jar@                  slf4j-log4j12-1.7.7.jar  tomcat-util.jar
catalina-ant.jar          httpcore-4.3.jar          log4j-over-slf4j-1.7.7.jar  tomcat-api.jar           wstx-asl-3.2.7.jar
catalina-ha.jar           httpmime-4.3.1.jar        log4j.properties            tomcat-coyote.jar        zookeeper-3.4.6.jar
catalina.jar              jasper-el.jar             log4j.properties.bak        tomcat-i18n-es.jar
catalina-tribes.jar       jasper.jar                noggit-0.5.jar              tomcat-i18n-fr.jar
commons-collections.jar@  jasper-jdt.jar@           servlet-api.jar             tomcat-i18n-ja.jar
commons-dbcp.jar@         jcl-over-slf4j-1.7.7.jar  slf4j-1.7.7/                tomcat-jdbc.jar

正如您所见,所有的库都应该在那里。

那么这是什么原因造成的?我是不是在错误的 Tomcat 目录中?我是不是没有获取正确的文件?我是不是缺少了某些配置设置?我几乎完全迷失了方向。

答案1

在您的类路径中有两个版本的 slf4j api 库并不是一个好主意。您有 slf4j-api-1.7.6.jar 和 slf4j-api-1.7.7.jar。

此外,您的类路径中应该有相应的 slf4j 实现库。

请参阅slf4j 文档获取有关如何在应用程序中包含 slf4j 的更多详细信息。

答案2

为了使您的 Solr 与 Tomcat 正常工作,您需要:

  1. 将 SLF4j 日志 jar 文件复制<solr>/example/lib/ext/*.jar到 Tomcat Lib(例如TOMCAT_HOME/lib/usr/share/tomcat/lib或 Webapp Lib 目录(例如TOMCAT_HOME/webapps/solr/WEB-INF/lib)。这些 jar 文件将设置 SLF4J 和 log4j。

    对于使用操作系统供应商提供的 Tomcat 包的 Debian 或 Ubuntu 服务器,这可能是/usr/share/tomcat6/lib/usr/share/tomcat7/lib

    例如:

    # cp -v /opt/solr-4.10.4/example/lib/ext/*.jar /usr/share/tomcat?/lib/
    

    或者:

    # cp -v /opt/solr-4.10.4/example/lib/ext/*.jar /var/lib/tomcat7/webapps/solr/WEB-INF/lib/
    

    或者设置你的CLASSPATH以指向你的 jar 文件。

  2. 将日志配置复制solr/example/resources/log4j.properties到类路径上的某个位置。通常,您可以使用与上述 jar 文件相同的位置,并编辑您首选日志目标的配置文件。

    或者,如果您没有放置log4j.properties在类路径上,请设置 java 选项: -Dlog4j.configuration=file:///path/to/log4j.properties

  3. 重新启动 Tomcat(例如sudo /etc/init.d/tomcat7 restart)。

如果仍然有问题,启动服务器可能会有助于-Dlog4j.debug=true查看更多详细信息。

看:在 Jetty 以外的容器中使用示例日志设置

相关内容