如何解决Tomcat缺lessSLF4j日志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目录中? 我没有抓到正确的文件吗? 有一些configuration设置我错过了吗? 我几乎完全迷失在这里。

在classpath中有两个版本的slf4j api库不是一个好主意。 你有slf4j-api-1.7.6.jar以及slf4j-api-1.7.7.jar在里面。

此外,你应该在你的类path中有相应的slf4j实现库。

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

要使Tomr与Tomcat正常工作,您需要:

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

    对于使用OS供应商提供的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的日志loggingconfiguration复制到类path中的某个位置。 通常,您可以使用与上述jar文件相同的位置,并编辑首选日志目标的configuration文件。

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

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

如果仍然存在问题,可以使用-Dlog4j.debug=true启动服务器以查看更多详细信息。

请参阅: 使用Jetty以外的容器中的示例日志logging设置