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 = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = sampleapp01.

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 2009/08/24, KQ TAURA-URANO398)

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル