Javaに関する様々な情報をご紹介します。

8アクセスログ

Javaに関する様々な情報をご紹介します。

アクセスログ

ここでは、Tomcatのアクセスログを取得する方法について解説します。

実行環境
  • ・WindowsXP Home Edition
  • ・Tomcat 5.0.18
  • ・J2SDK 1.4.2_03

設定方法

Tomcatのアクセスログ設定はserver.xmlやコンテキスト名.xmlに設定する<Valve>タグで行います。アクセスログとはコンテキストに設置されたJSP、サーブレット、HTML、GIFファイルなどのアクセス状況を表すログで、Tomcat動作に関するログ(エラーログなど)とは異なります。Tomcat動作に関するログは<Logger>タグで行います(Tomcat5.5からは、<Logger>タグではなく、logging.propertiesファイルで行うようになりました)。<Valve>タグでは、ログファイル名、ログパターンなどを指定できます。

<Valve>タグは<Engine>タグ、<Host>タグ、<Context>タグのサブ要素として設定できます。<Engine>タグのサブ要素として設定した場合はそのTomcatエンジンすべてのアクセスログを生成します。<Host>タグのサブ要素として設定した場合はTomcatエンジン内に設定したある仮想ホストすべてのアクセスログを生成します。<Context>タグのサブ要素として設定した場合は、設定されたコンテキストのすべてのアクセスログを生成します。

以下はアクセスログ生成で指定できる<Valve>タグの属性です。

属性 内容 デフォルト 必須
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 -

設定例

アクセスログ生成における<Valve>タグの設定例を記載します。

<Host name="localhost"
    debug="0" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">

    <Valve className="org.apache.catalina.valves.AccessLogValve"
            directory="logs/AccessLog"
            prefix="tomcat_accs_"
            suffix=".log" />

----------------------
----------------------
  1. localhostと指定された仮想ホストすべてのアクセスログを生成するため、server.xmlファイルの<Host>タグの配下に<Valve>タグを設定します。
  2. アクセスログが生成されるディレクトリは$CATALINA_HOME\logs\AccessLogとします。
  3. アクセスログファイルの先頭文字はtomcat_accs_とします。
  4. アクセスログファイルの後方文字は.logとします。

Tomcatを起動し、いくつかのファイルにアクセスします。 $CATALINA_HOME\logs\AccessLogディレクトリにtomcat_accs_2004-02-25.logファイルが作成され、以下のようなアクセスログが生成されます。

127.0.0.1 - - [25/Feb/2004:13:32:36 +0000] "GET /jsp-examples/ HTTP/1.1"
200 14551
127.0.0.1 - - [25/Feb/2004:13:32:36 +0000] "GET /jsp-examples/images/cod
e.gif HTTP/1.1" 200 292
127.0.0.1 - - [25/Feb/2004:13:32:36 +0000] "GET /jsp-examples/images/ret
urn.gif HTTP/1.1" 200 1231
127.0.0.1 - - [25/Feb/2004:13:32:36 +0000] "GET /jsp-examples/images/exe
cute.gif HTTP/1.1" 200 1242
127.0.0.1 - - [25/Feb/2004:13:32:41 +0000] "GET /jsp-examples/jsp2/el/ba
sic-arithmetic.jsp HTTP/1.1" 200 1437

8アクセスログ