Como corrigir os jars de registro SLF4j do Tomcat?

2

Estou recebendo este erro ao tentar iniciar um novo aplicativo usando o 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

Eu não estou usando o Jetty, estou usando o Tomcat, então minhas instruções de instalação são um pouco diferentes.

Eu verifiquei o link e li extensivamente sobre isso - parece que as bibliotecas precisam ir em $ CATALINA_BASE / lib - que no meu caso deve ser:

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

No entanto, eu coloquei as bibliotecas lá - sem dados.

Este é o diretório 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

Como você pode ver, todas as bibliotecas devem estar lá.

Então, o que está causando isso? Eu estou no diretório errado do Tomcat? Eu não peguei os arquivos corretos? Existe alguma configuração que me falta? Eu estou praticamente totalmente perdido aqui.

    
por Andrew Alexander 19.08.2014 / 19:06

2 respostas

1

Não é uma boa ideia ter duas versões da biblioteca api slf4j no seu classpath. Você tem o slf4j-api-1.7.6.jar, assim como o slf4j-api-1.7.7.jar.

Além disso, você deve ter a biblioteca de implementação slf4j corressponding no seu classpath.

Consulte a documentação do slf4j para obter mais detalhes sobre como incluir o slf4j em seu aplicativo.

    
por 19.08.2014 / 19:20
0

Para tornar o seu Solr com o Tomcat funcionando corretamente, você precisa:

  1. Copie os jars de criação de log do SLF4j de <solr>/example/lib/ext/*.jar para o diretório Tomcat Lib (por exemplo, TOMCAT_HOME/lib , /usr/share/tomcat/lib ) ou Webapp Lib (por exemplo, TOMCAT_HOME/webapps/solr/WEB-INF/lib ). Esses jars configurarão o SLF4J e o log4j.

    Para um servidor Debian ou Ubuntu usando o pacote Tomcat disponível no fornecedor do SO, é provável que seja /usr/share/tomcat6/lib ou /usr/share/tomcat7/lib .

    Por exemplo:

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

    ou:

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

    Como alternativa, configure seu CLASSPATH para apontar para seus arquivos jar.

  2. Copie a configuração de log de solr/example/resources/log4j.properties em um local no caminho de classe. Normalmente, você pode usar o mesmo local dos arquivos jar acima e editar o arquivo de configuração para o seu destino de registro preferido.

    Opcionalmente, se você não colocou log4j.properties no caminho de classe, defina a opção java: -Dlog4j.configuration=file:///path/to/log4j.properties

  3. Reinicie o Tomcat (por exemplo, sudo /etc/init.d/tomcat7 restart ).

Se você ainda tiver problemas, pode ser útil iniciar o servidor com -Dlog4j.debug=true para ver mais detalhes.

Veja: Usando a configuração de criação de log de exemplo em contêineres diferentes do Jetty

    
por 06.04.2015 / 20:18