Tomcatのログ設定めも
Tomcatのログには「アクセスログ」と「サーバーログ(Catalinaログとか標準出力とか標準エラー出力」がある。
アクセスログ
- server.xmlの
で設定する。 - Valve要素はEngine要素(Tomcatエンジン全体)・Host要素(Tomcatエンジン内に設定した仮想ホスト)・Context要素(コンテキスト)のいずれかの子要素として設定。
- 参考
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の
で設定する。だったのだが、Tomcat6から「logging.properties」で設定するように変わった模様。 - 参考
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」に変更したいファイルの吐き先を代入するなりすればよい。