ぺーぺーSEのブログ

備忘録・メモ用サイト。

Tomcatのログ設定めも

Tomcatのログには「アクセスログ」と「サーバーログ(Catalinaログとか標準出力とか標準エラー出力」がある。





アクセスログ

server.xml
<Context path="/sampleAP" docBase="/home/sample/webapp">
  <Valve className="org.apache.catalina.valves.AccessLogValve" 
         directory="/home/sample/log"
         prefix="access-"
         fileDateFormat="yyyy-MM-dd"
         suffix=".log"/>
</Context>
タグの属性
属性 内容 デフォルト 必須
className アクセスログを生成するJavaクラスを指定。値はorg.apache.catalina.valves. AccessLogValveでなければならない。 -
directory アクセスログが生成されるディレクトリを指定。相対PATHで指定した場合は、$CATALINA_HOME以下に指定ディレクトリが続く形になる。指定ディレクトリがない場合はログ生成時に作成される。 logs -
pattern アクセスログのフォーマットを%a、%qなどの指定値で指定できる。詳細はTomcatドキュメントを参照。 common -
prefix アクセスログが生成されるファイル名の最初に来る名前を指定する。prefix自体を指定したくない場合は0を指定する。 access_log -
resolveHosts リモートホストIPアドレスDNS名前解決により、ホスト名に変換するかどうかを指定する。trueに指定した場合はサーバに負荷がかかる。 false -
suffix アクセスログが生成されるファイル名の最後に来る名前を指定する。 " " -
rotatable ログファイルのローテートを行うかどうかを指定する。 true -
condition ServletRequest.getAttribute( )の値がNullの場合のみログを生成する。たとえば、condition="key"と設定されており、ServletRequest.getAttribute("key") == nullの場合のみそのアクセスログが生成される。 - -
fileDateFormat アクセスログをローテートする場合にファイル名に付与される日付フォーマットを指定する。また、ローテートのタイミングを指定することもできる。yyyy-MM-dd.HHと設定することにより毎時ローテートが行われる。 yyyy-MM-dd -

サーバーログ

server.xml(Tomcat5以前の書き方)
<Context path="/sampleAP" docBase="/home/sample/webapp">
  <Logger className="org.apache.catalina.logger.FileLogger">
          directory="/home/sample/log"
          prefix="error-"
          suffix=".log"
          timestamp="true">
  </Logger>
</Context>
logging.properties(Tomcat6以降の書き方)

("handlers"に加えるのを忘れないように!)

handlers = catalina.org.apache.juli.FileHandler,(ファイルに出力するログの設定)
           java.util.logging.ConsoleHandler     (コンソールに出力するログの設定:標準出力、標準エラー出力)
.handlers = catalina.org.apache.juli.FileHandler,
            java.util.logging.ConsoleHandler

# ファイルに出力するログの設定
catalina.org.apache.juli.FileHandler.level = FINE         (ログレベル)
catalina.org.apache.juli.FileHandler.directory = /var/log (ログの出力先)
catalina.org.apache.juli.FileHandler.prefix = catalina.   (ログファイルの開始文字)

# コンソールに出力するログの設定:標準出力、標準エラー出力
java.util.logging.ConsoleHandler.leverl = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

# 各コンテキストのログの設定も可能
org.apache.catalina.core.ContainerBase.[sever.xmlのEngineタグのname].[server.xmlのHostタグのname].[コンテキスト].level = INFO
org.apache.catalina.core.ContainerBase.[sever.xmlのEngineタグのname].[server.xmlのHostタグのname].[コンテキスト].handlers= catalina.org.apache.juli.FileHandler
# 例
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/sampleAP].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/sampleAP].handlers= 6sample.org.apache.juli.FileHandler

ちなみにlogging.propertiesで設定したコンソールログ出力はtomcatの起動シェルcatalina.sh内でリダイレクトされ、コンソールに吐かず、ファイルcatalina.outに吐かれる。
CATALINA_OUTという変数でファイルの吐き先をコントロールしている。
吐き先を変更したい場合はsetenv.shで「CATALINA_OUT」に変更したいファイルの吐き先を代入するなりすればよい。