Tomcat起動ログ-重大:エラーfilterStartスタックトレースを取得する方法?


96

Tomcatを起動すると、次のエラーが発生します。

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

Tomcatのログにスタックトレースが含まれていないのは奇妙に思われます。このようなエラーのスタックトレースを取得するために、Tomcatのログを増やす方法についての提案はありますか?


1
私はGuice-Servletを使用しており、このフレームワークのセットアップメソッドの周りでtry / catchを実行することで、すべての例外をキャッチし、自分のログに記録した後にそれらを再スローすることができました。私はまだ盲目的にGuice-Servletのフィルターが機能するようにデバッグする必要がありましたが、それに追加されたものはすべて機能するようです。
benstpierre 2010年

1
スタックトレースはstdoutに移動するようですが、IntellijはTomcatのstdoutを読み取りません。tomcat.apache.org/tomcat-6.0-doc/logging.html Intellijがファイルを表示できるように、tomcatのstdoutをファイルにリダイレクトする必要があります。
benstpierre 2010年

回答:


138

Tomcatが作成するlocalhost_yyyy_mm_dd.logOR localhost.yyyy-mm-dd.logログを確認します。これらは通常、そのタイプの情報を格納します。完全なスタックトレースが標準出力にダンプされるとは思いません。


Tomcat 5.5のインスタンスはそのファイルを書き込みません。
Arne Evertsson、2010年

3
この瞬間まで、「error filterStart」は私の悪夢を悩ませてきました...もう長くない!あなたはロック!
コーディS

開発中に発見してうれしいことの1つ。本当にありがとう。
Francisco Lozano

私のTomcat 6(デフォルトのセットアップ)はファイルに何も書き込みません。問題の原因を読み取るためにConsoleHandlerをオンにする必要があり、それによりCatalina出力ファイルに例外が書き込まれました。

2
@mattblangは$ TOMCAT_HOME / conf / logging.propertiesを調べます。デフォルトの設定は直感に反しています。
matt b

80

WEB-INF / classesにlogging.propertiesという名前のファイルを作成し、次の内容を含めます。

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

WEB-INFにクラスディレクトリがない場合は、作成するだけで問題なく機能することに注意してください。
Muhd

21

Tomcatはスタックトレースをログに記録しますが、tomcatがIDEから起動された場合、ログファイルの場所が常に明確であるとは限りません。IntelliJから起動すると、CATALINA_BASEはに設定され${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-idea、ログファイルはにあり[CATALINA_BASE]/logsます。

ログを表示するには、ログファイルを見つけるか、編集[CATALINA_HOME]/conf/logging.propertiesしてtomcatロガーの出力をコンソールに送信します。以下では、2番目のハンドラーをデフォルトの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

これで、完全なスタックトレースが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)
 . . .


5

多分あなたのアプリケーションはTomcatとは異なるJREでコンパイルされています。

java -versionサーバーを確認し、同じバージョンでコードをコンパイルします。私のEclipse標準JREが1.6でTomcatが1.5を使用していたため、エラーが発生しました-これは機能しません。


2

CentOS 6およびSolr 4.4.0の場合

このエラーに対処するには、いくつかのlibファイルをコンパイルする必要がありました

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

これは私にとっても問題を解決しました。Ubuntu 14.04、solr 4.8.1、tomcat 7
cjungel '23 / 09/14

2

通常、localhost。[date] .logに問題に関する情報があります。ただし、このログに何もない場合があります。これは、プロジェクトの構成がめちゃくちゃになっている場合に発生する可能性があります(何人かの開発者が長い間プロジェクトに取り組んでおり、それぞれが自分から何かを追加していました)。ログに情報がない状態でこの問題に直面しました。かなり高速で堅牢なアプローチ:

  1. 問題を引き起こす可能性のあるすべてのものをweb.xmlから削除してください。タグ以外のすべてを削除することもできます。それでもアプリケーションをデプロイできない場合-続行してください。

  2. すべての* .xml記述子をWEB-INF / classesから削除します。アプリケーションをデプロイできない場合-続行してください。

  3. warにあるすべてのロギング構成(logging.properties、log4j.properties)を削除します。デプロイしてみてください。このステップでは、より有益なエラーが発生しましたが、展開はまだ失敗しました。

このエラーをグーグルで調べたところ、プロジェクトには古いバージョンのxercesが含まれていて、Tomcatのバージョン(新しいバージョン)と競合していて、アプリケーションがデプロイされていないことがわかりました。Webアプリケーションでのxercesのアップグレード後、すべてが正常になりました。


1

Tomcatのlog4jロギングの設定は非常に簡単です。以下はhttp://tomcat.apache.org/tomcat-5.5-doc/logging.htmlからの引用です。

  1. 次の内容でlog4j.propertiesというファイルを作成し、それを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. Log4J(v1.2以降)をダウンロードし、log4j jarを$ CATALINA_HOME / common / libに配置します。

  3. Commons Loggingをダウンロードし、commons-logging-xyzjar(commons-logging-api-xyzjarではない)をlog4j jarを使用して$ CATALINA_HOME / common / libに配置します。
  4. Tomcatを起動します

また、http://wiki.apache.org/tomcat/FAQ/Loggingも参照してください。


これにより、デプロイ例外が実際に適切にログに記録されますか?
benstpierre 2010年

はい。私はこの正確な方法を使用して、展開中に問題の原因を見つけました。
Tommi

1
申し訳ありませんが、ログファイルはログレベルがDEBUGで貫通できません。これには、問題とは何の関係もないように見えるいくつかの例外が含まれています-私の場合、これはStrutsの問題だと思います。
Arne Evertsson、2010年

1

SEVEREのようなエラーが発生している場合:エラーfilterStart 2013年4月29日4:49:20 PM

次に、tomcat / libディレクトリにcors-filter-1.5.jarが含まれているかどうかを確認してください。ドットがある場合、uは上記のエラーになり、urアプリケーションは使用できません。

だから、私は他のtomcatフォルダからjarファイルをコピーすることができましたが、後で上記のエラーが発生しませんでした。


1

私も同じエラーに遭遇し、この問題の修正に多くの苦労をしました。Googleの検索で少し静かに過ごし、次の解決策を見つけたので、私の問題は解決しました。

この問題は、デプロイメントパスにStruts2ライブラリがないために発生していました。ほとんどの人は、ライブラリをコンパイル用に置き、ランタイムに必要なライブラリを添付するのを忘れがちです。そこで、同じライブラリをWeb配置アセンブリに追加したところ、問題は解決しました。


1

同じ問題が発生しました。アプリケーションをTomcatにデプロイすると、アプリケーションを起動できません。しかし、StrutsのjarセットをCATALINA_HOME \ lib(Tomcat dir)ディレクトリにコピーすると、解決されます。これらのjarをWEB_INF \ libに含める必要はありませんが、ビルドパスに含める必要があります。

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

ほぼ同じ問題に最後の1時間を費やした後に貢献したかっただけです。私の解決策は、どういうわけかアプリケーションの.jarが破損していたため、開発サーバーからjarを配置することで修正されたというものでした。


0

同様の問題がありました。レナートのチップは私のために働いた。古いバージョンのJavaクラスファイル(WEB-INF / classesフォルダーの下)を使用したところ、問題は解決しました。したがって、コンパイラのバージョンが一致していないはずです。


0

これは私にとってトリックでした:すべてのライブラリを削除してから、コンパイルして実行します。プロジェクトのエラーを確認するように求められます。ライブラリを適用した後、プロジェクトを再実行します。


0

通常、サーバーJDKのバージョンはデプロイされたアプリケーションよりも低くなります(より高いjdkバージョンでビルドされます)


-1

次のコマンドを実行して、端末にカタリナログを表示します---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.