Registri di avvio di Tomcat - GRAVO: filtro erroriInizi a ottenere una traccia dello stack?


96

Quando avvio Tomcat ottengo il seguente errore:

Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/mywebapplication] startup failed due to previous errors

Sembra strano che i log per Tomcat non includano una traccia dello stack. Qualcuno ha un suggerimento su come aumentare la registrazione in Tomcat per ottenere tracce dello stack per errori come questo?


1
Sto usando Guice-Servlet e provando / catturando il mio metodo di installazione per questo framework sono stato in grado di catturare tutte le eccezioni e rilanciarle dopo aver effettuato l'accesso. Dovevo ancora eseguire il debug alla cieca per far funzionare il filtro di Guice-Servlet, ma qualsiasi cosa aggiunta a ciò sembra funzionare.
benstpierre

1
Sembra che lo stack tracci goto stdout ma Intellij non legge lo stdout per Tomcat. tomcat.apache.org/tomcat-6.0-doc/logging.html Devo fare in modo che stdout in Tomcat reindirizzi a un file in modo che Intellij possa visualizzarlo.
benstpierre

Risposte:


138

Controlla i registri localhost_yyyy_mm_dd.logOR localhost.yyyy-mm-dd.logcreati da Tomcat, questi in genere memorizzano quel tipo di informazioni. Non mi aspetto che lo stacktrace completo venga scaricato in standard.


La mia istanza di Tomcat 5.5 non scrive quel file.
Arne Evertsson

3
Fino a questo momento "error filterStart" ha tormentato i miei incubi ... NON PIU '! Sei forte!
Cody S

Una di queste cose che sei felice di scoprire durante lo sviluppo. Grazie mille.
Francisco Lozano

Il mio Tomcat 6 (con l'impostazione predefinita) non scrive mai nulla sul file, ho dovuto attivare ConsoleHandler per leggere cosa è andato storto e questo ha scritto le eccezioni nel file di output di Catalina.

2
@mattblang dai un'occhiata a $ TOMCAT_HOME / conf / logging.properties. L'impostazione predefinita è controintuitiva.
matt b

80

creare un file denominato logging.properties in WEB-INF / classes con il seguente contenuto:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

Nota che se non hai una directory di classi in WEB-INF, puoi semplicemente crearne una e funzionerà bene.
Muhd

21

Tomcat registra lo stacktrace, ma non è sempre chiaro dove si trovano i file di registro, quando tomcat viene avviato da un IDE. Quando lo avvio da IntelliJ, CATALINA_BASEè impostato su ${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-ideae i file di registro sono in formato [CATALINA_BASE]/logs.

Per vedere i log, individua i file di log o modifica [CATALINA_HOME]/conf/logging.propertiesper indirizzare l'output del logger Tomcat alla console. Di seguito ho aggiunto un secondo gestore alla configurazione predefinita di Tomcat:

 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

Ora lo stacktrace completo appare nell'output di IntelliJ:

 Dec 27, 2011 12:02:45 PM org.apache.catalina.core.StandardContext filterStart
 SEVERE: Exception starting filter filterChainProxy
 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'filterChainProxy' is defined   at
 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
 . . .

9

è necessario copiare i file

cp /path/to/solr/example/lib/ext/* /path/to/tomcat/lib
cp /path/to/solr/example/resources/* /path/to/tomcat/lib // or inside extracted solr

e quindi riavvia tomcat


3
yay, questo mi ha salvato! . Inoltre sarebbe una buona idea guardare in /path/to/solr/example/resources/log4j.properties e modificare la directory dei log
user9869932

5

Forse la tua applicazione è compilata con un JRE diverso da Tomcat.

Controlla java -versionsul tuo server e poi compila il tuo codice con la stessa versione. Ho avuto l'errore perché il mio JRE standard Eclipse era 1.6 e Tomcat usava 1.5 - questo non può funzionare.


2

In CentOS 6 e Solr 4.4.0

Ho dovuto compilare alcuni file lib per risolvere questo errore

cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/

Questo ha risolto il problema anche per me. Ubuntu 14.04 e solr 4.8.1 e tomcat 7.
cjungel

2

Di solito ci sono informazioni sul problema in localhost. [Date] .log. Ma a volte non c'è niente in questo registro. Questo può accadere se c'è una configurazione confusa del progetto (diversi sviluppatori ci hanno lavorato a lungo e ognuno ha aggiunto qualcosa da se stesso). Ho affrontato questo problema SENZA alcuna informazione nel registro. Approccio piuttosto veloce e robusto:

  1. Prova a rimuovere tutto ciò che può causare problemi da web.xml. Puoi persino rimuovere tutto tranne il tag. Se l'applicazione non può ancora essere distribuita, vai avanti.

  2. Rimuovi ogni descrittore * .xml da WEB-INF / classes. Se l'applicazione non può essere distribuita, vai avanti.

  3. Rimuovi tutte le configurazioni di registrazione che puoi trovare nel tuo war (logging.properties, log4j.properties). Prova a distribuire. A questo punto ho ricevuto un errore più informativo, ma la distribuzione non è riuscita ancora.

Dopo aver cercato su Google questo errore, ho scoperto che il progetto includeva la vecchia versione di xerces, che si scontrava con la versione di Tomcat (che era più recente) e non era l'applicazione da distribuire. Dopo l'aggiornamento di xerces nell'applicazione web, tutto è andato bene.


1

L'impostazione della registrazione di log4j per Tomcat è piuttosto semplice. Quanto segue è citato da http://tomcat.apache.org/tomcat-5.5-doc/logging.html :

  1. Crea un file chiamato log4j.properties con il seguente contenuto e salvalo in common / classes.

              log4j.rootLogger=DEBUG, R 
              log4j.appender.R=org.apache.log4j.RollingFileAppender 
              log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
              log4j.appender.R.MaxFileSize=10MB 
              log4j.appender.R.MaxBackupIndex=10 
              log4j.appender.R.layout=org.apache.log4j.PatternLayout 
              log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
  2. Scarica Log4J (v1.2 o successiva) e posiziona il jar log4j in $ CATALINA_HOME / common / lib.

  3. Scarica Commons Logging e inserisci il file commons-logging-xyzjar (non commons-logging-api-xyzjar) in $ CATALINA_HOME / common / lib con il jar log4j.
  4. Avvia Tomcat

Potresti anche voler dare un'occhiata a http://wiki.apache.org/tomcat/FAQ/Logging


Questo farà sì che le eccezioni distribuite vengano effettivamente registrate correttamente?
benstpierre

Sì. Ho usato questo metodo esatto per trovare le cause dei problemi durante la distribuzione.
Tommi

1
Mi dispiace ma il file di registro è impenetrabile con un livello di registro di DEBUG. Contiene alcune eccezioni che non sembrano avere nulla a che fare con il problema, che sospetto sia un problema di Struts nel mio caso.
Arne Evertsson

1

se qualcuno riceve un errore come SEVERE: Error filter Start 29 aprile 2013 16:49:20 org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/ TraceMW] avvio non riuscito a causa di errori precedenti

quindi controlla se la tua directory tomcat / lib contiene cors-filter-1.5.jar oppure no. se non lo hai, otterrai l'errore precedente e la tua applicazione non sarà disponibile.

Quindi, sono appena riuscito a copiare il file jar da un'altra cartella Tomcat e non ho ricevuto l'errore sopra menzionato in seguito.


1

Anch'io ho ricevuto lo stesso errore e ho lottato molto per risolvere questo problema. Ho passato un po 'di tempo a cercare su Google e ho trovato la seguente soluzione e il mio problema è stato risolto.

il problema era dovuto alla mancanza di librerie Struts2 nel percorso di distribuzione. La maggior parte delle persone potrebbe mettere le librerie per la compilazione e tendere a dimenticare di allegare le librerie richieste per il runtime. Quindi ho aggiunto le stesse librerie nell'assembly di distribuzione Web e il problema era DISATTIVATO.


1

Ho avuto lo stesso problema, impossibile avviare l'applicazione una volta che è stata distribuita in Tomcat. Ma, una volta copiato il set di jar Struts nella directory CATALINA_HOME \ lib (Tomcat dir), viene risolto. Non hai bisogno di avere questi vasi nel tuo WEB_INF \ lib ma devi averli nel tuo percorso di compilazione.

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

freemarker-2.3.16.jar

javassist-3.11.0.GA.jar

struts2-convention-plugin-2.2.1.jar

struts2-core-2.2.1.jar

xwork-core-2.2.1.jar


0

Volevo solo contribuire dopo aver trascorso l'ultima ora su un problema quasi identico. La mia soluzione era che in qualche modo le nostre applicazioni .jar erano danneggiate, quindi il posizionamento del jar dal nostro server di sviluppo forniva una soluzione.


0

Ho avuto un problema simile. La punta di Renato ha funzionato per me. Ho usato una versione precedente dei file di classe java (nella cartella WEB-INF / classes) e il problema è scomparso. Quindi, avrebbe dovuto essere la mancata corrispondenza della versione del compilatore.


0

Questo ha fatto il trucco per me: basta rimuovere tutte le librerie, quindi compilare ed eseguire. Richiederebbe la conferma degli errori nel progetto. Riesegui il progetto dopo aver applicato le librerie.


0

Generalmente la versione JDK del server sarà inferiore rispetto all'applicazione distribuita (costruita con una versione jdk superiore)


-1

Esegui il comando seguente per mostrare i log di catalina sul terminale ---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.