- ベストアンサー
Servletのエラーメッセージは何処へ?
Servletを勉強し始め、少しずつ自分で書けるようになってきました。 そこで、デバッグについてお聞きしたいのですが・・・。 作ったservletにエラーがあった場合、ブラウザには何も返ってきません。で、サーバ側のコンソールを見てみると、(rootでtomcatを起動しているのですが)コンソールにエラーが次々と出ては流れていきます。しかし、一旦ROOTをログアウトするとエラーが起こってもメッセージは出てくれません。 そこで、エラーログが記録されているはずだと思い、参照しようとしたんですが、$TOMCAT_HOME/logs/ には exampleが2個とjasper-YYMMDD.log と、mod_jk.log、servlet-YYMMDD.logにtomcat.pid しかありません。一通り見たのですが起動とか呼び出されは書いてあるものの、エラーログではなさそうです。 一体エラーメッセージは何処へ・・・。 ちなみに、server.xml はLogSetterを確認してLogEventsをtrueにしてあります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
えーと、要するに、どこでエラーが出ているのかを確認したいということでいいですか? Servlet自身は(というよりTomcatは)どこでエラーが出ているのかを明確に出力してはくれない(例外が発生したら別だが)ので、自分でデバッグ文を書くしかありません。 一番単純なやり方としては、log()を使うことです。 こんな感じ。 public void init() { log("init通過"); } 各所にlog()でメッセージを書いていけば、ログファイルにそのメッセージが出力されます。 つまりは、出力されていないlog()より前でエラーが出ているわけです。 log("Count = " + mCount); とかすれば、現在のカウンタの値を出力する、なんてこともできるわけで。。。
その他の回答 (2)
- yuji
- ベストアンサー率37% (64/169)
Tomcatでサーブレットから出力されるログをとりあえず保存しておきたい、という質問だとしたら 起動時に、 startup.sh > tomcat.log 2> tomcat.errlog みたいな感じで出力先のログファイルを指定すれば、 ファイルに保存できます。
お礼
コンソールに出力されるログだけでもなんとかなる場合があるので、この方法でも良いですね。 ありがとうございます、試してみます。
- kuro_73
- ベストアンサー率28% (33/117)
Tomcatは使ったこと無いのでわかりませんが、別のサーブレット・エンジンではstdout.logやstderr.logに排出されています
お礼
ありがとうございます。 が、やはりエラーログらしきものはありませんでした・・・。(^-^;
お礼
たしかに、いちいち吐いてくれないようですね。 log()については初めて知りました。これでしばらく使ってみようと思います。 ありがとうございました。