Edited at

TomcatとEclipseとログ

More than 1 year has passed since last update.

Eclipse MarsとTomcat8で開発しててログを設定しようとしてもあまり良い情報が出てこなくてTomcatの公式ドキュメント見ても最終的にどうすれば良いんだまとめてくれって感じだった。


ぼくが本当に必要だったもの

まずは、プロジェクトの WEB-INF/classes/logging.properties に以下を書きます。

handlers = java.util.logging.ConsoleHandler

java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

org.example.level = ALL

EclipseのTomcatの起動の構成で、VM引数に -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager を追加するとINFO未満のログレベルが表示できます。


解説

Tomcatでログを設定する場所は3段階ほどあります。


  1. JREの設定 ${JAVA_HOME}/lib/logging.properties

  2. Tomcatの設定 ${CATALINA_BASE}/conf/logging.properties

  3. アプリケーションの設定 WEB-INF/classes/logging.properties

JREの設定で大抵はConsoleに投げるようになっているはずです。公式のExampleのようなTomcatの設定は、運用時に必要になってくるのではないでしょうか。

logging.properties は、いたって普通の java.util.logging の設定で十分です。とりあえず最初は ALL で全部流しちゃえば良いと思います。レベルやパッケージで減らしたい場合はTomcatのドキュメントを参照してください。

Tomcatは独自の LogManager を利用しているので、Eclipseのコンソールに表示できるように起動時に設定します。2のTomcatの設定も行っているようであれば、 -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" も追加します。