• ベストアンサー

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にしてあります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#227796
noname#227796
回答No.1

えーと、要するに、どこでエラーが出ているのかを確認したいということでいいですか? Servlet自身は(というよりTomcatは)どこでエラーが出ているのかを明確に出力してはくれない(例外が発生したら別だが)ので、自分でデバッグ文を書くしかありません。 一番単純なやり方としては、log()を使うことです。 こんな感じ。 public void init() {  log("init通過"); } 各所にlog()でメッセージを書いていけば、ログファイルにそのメッセージが出力されます。 つまりは、出力されていないlog()より前でエラーが出ているわけです。 log("Count = " + mCount); とかすれば、現在のカウンタの値を出力する、なんてこともできるわけで。。。

pythian
質問者

お礼

たしかに、いちいち吐いてくれないようですね。 log()については初めて知りました。これでしばらく使ってみようと思います。 ありがとうございました。

その他の回答 (2)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.3

Tomcatでサーブレットから出力されるログをとりあえず保存しておきたい、という質問だとしたら 起動時に、  startup.sh > tomcat.log 2> tomcat.errlog みたいな感じで出力先のログファイルを指定すれば、 ファイルに保存できます。

pythian
質問者

お礼

コンソールに出力されるログだけでもなんとかなる場合があるので、この方法でも良いですね。 ありがとうございます、試してみます。

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.2

Tomcatは使ったこと無いのでわかりませんが、別のサーブレット・エンジンではstdout.logやstderr.logに排出されています

pythian
質問者

お礼

ありがとうございます。 が、やはりエラーログらしきものはありませんでした・・・。(^-^;

関連するQ&A