Tomcat6のログ出力

Tomcat6ではロギング機構が大きく代わり、デフォルトでJava Logging API のログが有効になっています。 したがって、各WebappにWEB-INF/classes/commons-logging.properties でApache Log4Jを使うように設定してあったとしてもそれは効きません。
commons-logging.propertiesを編集して、 以下のように、一旦Logging APIを使うように設定します。

#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
#org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog

そして、WEB-INF/classesに、logging.propertiesというファイルを作ります。
以下が一例です。

handlers = 9shitenapp01.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

jp.co.nsnhnkmmkk.level = FINEST

9shitenapp01.org.apache.juli.FileHandler.level = FINEST
9shitenapp01.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
9shitenapp01.org.apache.juli.FileHandler.prefix = shitenapp01-lp.

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

また、$CATALINA_HOME/libに置いてあるjarファイルの中のクラスで Commons Loggingによるログを使っている場合、 上と同じcommons-logging.propertiesを$CATALINA_HOME/libにも置けばokです。


System.outなどの出力をログに回す

Tomcat6のサンプルアプリケーションなどの普通の設定では、 System.outやSystem.errの出力はlogging.propertiesで定義したファイルには出力されず、 どこにも残されません。
Webアプリケーションの設定ファイル(XML)で、 「swallowOutput="true"」とすれば、ログファイルに一緒に出力されます。

<Context path="sampleapp1" docBase="C:/usr2/java/java56/sampleapp01"
  reloadable="true" crossContext="false" debug="0"
  cachingAllowed="false" swallowOutput="true">
... 中略 ...
</Context>

なお、Tomcat6のロギング機構をApache Log4Jに置き換える方法もあるようです。 これはおいおいhowtoを見ながら試してみます。

Server Side Java Index Top

(first uploaded 2008/08/02 last updated 2012/09/14, KQ TAURA-URANO398)