Journaux de démarrage Tomcat - SEVERE: Filtre d'erreurDémarrez comment obtenir une trace de pile?

96

Lorsque je démarre Tomcat, j'obtiens l'erreur suivante:

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

Il semble étrange que les journaux de Tomcat n'incluent pas de trace de pile. Quelqu'un a-t-il une suggestion sur la façon d'augmenter la journalisation dans Tomcat pour obtenir des traces de pile pour des erreurs comme celle-ci?

Benstpierre
la source
1
J'utilise Guice-Servlet et en faisant un essai / capture autour de ma méthode de configuration pour ce framework, j'ai pu attraper toutes les exceptions et les relancer après m'être connecté. Je devais encore déboguer aveuglément pour que le filtre de Guice-Servlet fonctionne, mais tout ce qui y est ajouté semble fonctionner.
benstpierre le
1
Il semble que les traces de pile vont à stdout mais Intellij ne lit pas la stdout pour Tomcat. tomcat.apache.org/tomcat-6.0-doc/logging.html J'ai besoin de faire rediriger stdout dans tomcat vers un fichier pour qu'Intellij puisse le voir.
benstpierre

Réponses:

138

Vérifiez les journaux localhost_yyyy_mm_dd.logOR localhost.yyyy-mm-dd.logque Tomcat crée, ceux-ci stockent généralement ce type d'informations. Je ne m'attendrais pas à ce que le stacktrace complet soit déchargé à la norme.

mat b
la source
Mon instance de Tomcat 5.5 n'écrit pas ce fichier.
Arne Evertsson
3
Jusqu'à ce moment, "error filterStart" a tourmenté mes cauchemars ... PLUS PLUS! Tu gères!
Cody S
Une de ces choses que vous êtes heureux de découvrir au cours du développement. Merci beaucoup.
Francisco Lozano
Mon Tomcat 6 (avec la configuration par défaut) n'écrit jamais rien dans le fichier, j'ai dû activer ConsoleHandler pour lire ce qui n'allait pas, et cela a écrit les exceptions dans le fichier de sortie de Catalina.
2
@mattblang jetez un œil à $ TOMCAT_HOME / conf / logging.properties. La configuration par défaut est contre-intuitive.
matt b
80

créez un fichier nommé logging.properties dans WEB-INF / classes avec le contenu suivant:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler
Micha Roon
la source
Notez que si vous n'avez pas de répertoire de classes dans WEB-INF, vous pouvez simplement en créer un et cela fonctionnera très bien.
Muhd le
21

Tomcat enregistre le stacktrace, mais il n'est pas toujours clair où se trouvent les fichiers journaux lorsque tomcat est démarré à partir d'un IDE. Lorsque je le démarre à partir d'IntelliJ, CATALINA_BASEest défini sur ${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-idea, et les fichiers journaux sont dans [CATALINA_BASE]/logs.

Pour voir les journaux, soit localiser les fichiers journaux ou modifier [CATALINA_HOME]/conf/logging.propertiesà la sortie de l' enregistreur de tomcat direct à la console. Ci-dessous, j'ai ajouté un deuxième gestionnaire à la configuration par défaut de 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

Maintenant, le stacktrace complet apparaît dans la sortie 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)
 . . .
Assen Kolov
la source
9

vous devez copier les fichiers

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

puis redémarrez tomcat

tuku
la source
3
oui, cela m'a sauvé! . Aussi, ce serait une bonne idée de regarder le /chemin/to/solr/example/resources/log4j.properties et de modifier votre répertoire de journaux
user9869932
5

Peut-être que votre application est compilée avec un JRE différent de Tomcat.

Vérifiez java -versionsur votre serveur puis compilez votre code avec la même version. J'ai eu l'erreur parce que mon JRE standard Eclipse était 1,6 et Tomcat a utilisé 1,5 - cela ne peut pas fonctionner.

Renato
la source
2

Dans CentOS 6 et Solr 4.4.0

J'ai dû compiler des fichiers lib pour corriger cette erreur

cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/
Amir Bilal
la source
Cela a résolu le problème pour moi aussi. Ubuntu 14.04 et solr 4.8.1 et tomcat 7.
cjungel
2

Généralement, il y a une information sur le problème dans localhost. [Date] .log. Mais parfois, il n'y a rien dans ce journal. Cela peut arriver s'il y a une configuration désordonnée du projet (plusieurs développeurs ont travaillé dessus pendant longtemps et chacun a ajouté quelque chose de lui-même). J'ai fait face à ce problème SANS aucune information dans le journal. Approche assez rapide et robuste:

  1. Essayez de supprimer tout ce qui peut causer un problème de web.xml. Vous pouvez même tout supprimer sauf la balise. Si l'application ne peut toujours pas être déployée, continuez.

  2. Supprimez chaque descripteur * .xml de WEB-INF / classes. Si l'application ne peut pas être déployée, continuez.

  3. Supprimez toute la configuration de journalisation que vous pouvez trouver dans votre war (logging.properties, log4j.properties). Essayez de déployer. À cette étape, j'ai une erreur plus informative, mais le déploiement a toujours échoué.

Après avoir recherché cette erreur sur Google, j'ai découvert que le projet incluait une ancienne version de xerces, qui était en conflit avec la version de Tomcat (qui était plus récente) et que l'application n'était pas déployée. Après la mise à niveau de xerces dans l'application Web, tout s'est bien passé.

Gennady Nikolaev
la source
1

La configuration de la journalisation log4j pour Tomcat est assez simple. Ce qui suit est extrait de http://tomcat.apache.org/tomcat-5.5-doc/logging.html :

  1. Créez un fichier appelé log4j.properties avec le contenu suivant et enregistrez-le dans 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. Téléchargez Log4J (v1.2 ou version ultérieure) et placez le fichier jar log4j dans $ CATALINA_HOME / common / lib.

  3. Téléchargez Commons Logging et placez le fichier commons-logging-xyzjar (et non commons-logging-api-xyzjar) dans $ CATALINA_HOME / common / lib avec le fichier jar log4j.
  4. Démarrez Tomcat

Vous voudrez peut-être également jeter un œil à http://wiki.apache.org/tomcat/FAQ/Logging

Tommi
la source
Cela entraînera-t-il une journalisation correcte des exceptions de déploiement?
benstpierre
Oui. J'ai utilisé cette méthode exacte pour trouver les causes des problèmes lors du déploiement.
Tommi
1
Je suis désolé mais le fichier journal est impénétrable avec un niveau de journalisation DEBUG. Il contient quelques exceptions qui ne semblent rien avoir à voir avec le problème - ce que je soupçonne est un problème Struts dans mon cas.
Arne Evertsson
1

si quelqu'un obtient une erreur comme SEVERE: Erreur filterStart 29 avril 2013 16:49:20 org.apache.catalina.core.StandardContext startInternal SEVERE: échec du démarrage de Context [/ TraceMW] en raison d'erreurs précédentes

alors veuillez vérifier si votre répertoire tomcat / lib contient cors-filter-1.5.jar ou non. si vous avez un point, vous obtiendrez l'erreur ci-dessus et votre application ne sera pas disponible.

Donc, j'ai juste réussi à copier le fichier jar à partir d'un autre dossier tomcat et je n'ai pas reçu l'erreur mentionnée ci-dessus plus tard.

Prasanthi
la source
1

J'ai moi aussi eu la même erreur et j'ai beaucoup lutté pour résoudre ce problème. J'ai passé un peu de temps à chercher sur Google et j'ai trouvé la solution suivante et mon problème a été résolu.

le problème était dû à l'absence de bibliothèques Struts2 dans le chemin de déploiement. La plupart des gens peuvent mettre les bibliothèques pour la compilation et ont tendance à oublier d'attacher les bibliothèques requises pour l'exécution. J'ai donc ajouté les mêmes bibliothèques dans l'assemblage de déploiement Web et le problème était désactivé.

user2682165
la source
1

J'ai eu le même problème, impossible de démarrer l'application une fois qu'elle est déployée dans tomcat. Mais, une fois que j'ai copié l'ensemble de fichiers Struts dans le répertoire CATALINA_HOME \ lib (répertoire Tomcat), il est résolu. Vous n'avez pas besoin d'avoir ces fichiers JAR dans votre WEB_INF \ lib mais vous devez les avoir dans votre chemin de compilation.

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

Vijay
la source
0

Je voulais juste contribuer après avoir passé la dernière heure sur un problème presque identique. Ma solution était que, d'une manière ou d'une autre, nos applications .jar étaient corrompues, donc placer le fichier jar de notre serveur de développement a fourni un correctif.

matchew
la source
0

J'ai eu un problème similaire. Le conseil de Renato a fonctionné pour moi. J'ai utilisé une ancienne version des fichiers de classe java (sous le dossier WEB-INF / classes) et le problème a disparu. Donc, cela aurait dû être l'incompatibilité de version du compilateur.

Prasanna HR
la source
0

Cela a fait l'affaire pour moi: supprimez simplement toutes les bibliothèques, puis compilez et exécutez. Cela inciterait à confirmer leurs erreurs dans votre projet. Réexécutez le projet après avoir appliqué les bibliothèques.

Ghulam Mohammed Taher
la source
0

En règle générale, la version JDK du serveur sera inférieure à l'application déployée (construite avec une version jdk supérieure)

user1114134
la source
-1

Exécutez la commande suivante pour afficher les journaux catalina sur le terminal ---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
Vivek Garg
la source