piyolog

piyokangoの備忘録です。セキュリティの出来事を中心にまとめています。このサイトはGoogle Analyticsを利用しています。

アクセスログを出力する。

ふと気がつけば、Tomcatにアクセスした際、アクセスログが出力されていないことに気づく。


Apacheと連携させることが通例となっていることが理由なのか、
Tomcatはどのバージョン(4.1、5.5、6.0)もはインストールしただけでは特にアクセスログの出力がされない模様。


Tomcatでのアクセスログ出力の有効化は難しくなく、
$TOMCAT_HOME/confディレクトリ直下のserver.xml
以下の箇所がコメントアウトされているので、それを解除すればよい。

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
   prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>


上記の設定でアクセスを行った際、$TOMCAT_HOME/logsディレクトリに
localhost_access_log.yyyy-MM-dd.txtといったファイル名で出力され、
日付単位でログのローテーションが行われる。


出力先を変更したい場合は、directory属性の値を出力対象のファイルパスに指定する。
ファイルの書き込み権限を持つユーザーであれば、指定した先にディレクトリが存在しなくても、
Tomcatが自動的に作成してくれるようだ。(6.0で検証。)


ローテーションのタイミング(例えば時間単位にしたい等)や
ログに出力される内容など設定を変更を行う場合、同Valve要素内の各属性を変更する必要がある。


コンテキスト単位での設定を分けるのであれば、コンテキスト.xmlを用意し、
server.xmlと同じようにValve要素を書いてあげればアクセスログの出力が有効となるみたいだ。
その際、server.xmlに記述されている場合、記述を行ったコンテキストに対しては上書きされる。


アクセスログ出力の設定変更をしてもログファイルの出力がされない場合、
上記の通り指定したディレクトリの書き込み権限を持っていない可能性が高い。
server.xmlコメントアウトをはずしても出力されないと結構はまっている人が多いようなので、
出力されない場合は一度チェックしてみてはどうか。

参照先URL
 http://www.javaroad.jp/opensource/js_tomcat6.htm