Как исправить отсутствие в Tomcat отсутствующих лог-файлов SLF4j?

Я получаю эту ошибку при попытке запустить новое приложение с помощью 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? Разве я не получил правильные файлы? Мне не хватает какой-то настройки конфигурации? Я почти полностью потерян здесь.

2 ответа

Не очень хорошая идея иметь две версии библиотеки API slf4j в вашем classpath. У вас есть slf4j-api-1.7.6.jar и slf4j-api-1.7.7.jar.

Кроме того, у вас должна быть соответствующая библиотека реализации slf4j в вашем classpath.

Обратитесь к документации по slf4j, чтобы получить более подробную информацию о том, как включить slf4j в ваше приложение.

Чтобы ваш Solr с Tomcat работал правильно, вам необходимо:

  1. Скопируйте банки журналирования SLF4j из <solr>/example/lib/ext/*.jar в Tomcat Lib (например, TOMCAT_HOME/lib, /usr/share/tomcat/lib) или каталог Webapp Lib (например, TOMCAT_HOME/webapps/solr/WEB-INF/lib). Эти банки будут устанавливать SLF4J и log4j.

    Для сервера Debian или Ubuntu, использующего пакет Tomcat, доступный у поставщика ОС, это может быть /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

Другие вопросы по тегам