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段階ほどあります。
- JREの設定
${JAVA_HOME}/lib/logging.properties
- Tomcatの設定
${CATALINA_BASE}/conf/logging.properties
- アプリケーションの設定
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"
も追加します。