Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

Apache、Tomcat、および JBoss で役に立つアクセスログ時間を有効にする

Solution Verified - Updated -

Environment

  • RedHat JBoss Enterprise Application Platform (EAP)
    • 4.x
    • 5.x
    • 6.x
  • Apache Web Server (httpd)
  • Tomcat
    • 6.x
    • 7.x

Issue

  • Apache および JBoss で役に立つアクセスログ時間を有効にするには
  • Apache および Tomcat で役に立つアクセスログ時間を有効にするには

Resolution

Apache および JBoss デフォルトのアクセスログのタイミングはミリ秒なので、高いアクセス時間をすばやく確認することができません。もしくは、たとえば、mod_jk を使用して Apache から JBoss への要求のフローを通して簡単に突き詰めることができません。デフォルトの設定を修正するのに有効なアプローチの 1 つは、(ミリ秒ではなく) 秒数での要求時間に続くログパターンの最初に Time Taken 文字列を追加します。

EAP 4.x / 5.x の場合

JBoss で Time Taken を有効にするには、$JBOSS_HOME/server/$CONFIG/deploy/$JBOSSWEB/server.xml で以下のコードを探します。

    <!--
    <Valve className="org.apache.catalina.valves.AccessLogValve"
           prefix="localhost_access_log." suffix=".log"
           pattern="common" directory="${jboss.server.home.dir}/log"
           resolveHosts="false" />
    -->

そして、pattern="common"pattern="Time Taken: %T %h %l %u %t %r %s %b %{COOKIE}i %{SET-COOKIE}o" に変更します。変更すると xml は以下のようになります。

    <Valve className="org.apache.catalina.valves.AccessLogValve"
           prefix="localhost_access_log." suffix=".log"
           pattern="Time Taken:%T %I %h %l %u %t %r %s %b %{COOKIE}i %{SET-COOKIE}o" directory="${jboss.server.home.dir}/log"
           resolveHosts="false" />

EAP 6.x の場合

Web サブシステム設定:

  • 使用しているプロファイルの web subsystem 下の <virtual-server> の中に以下のような <access-log> 設定を追加します。たとえば、(適切なプロファイルの) standalone-ha.xml/standalone-full-ha.xml/standalone-full.xml/standalone.xml/domain.xml のようになります。
<subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">
            <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
            <virtual-server name="default-host" enable-welcome-root="true">
                <alias name="localhost"/>
                <alias name="example.com"/>

              <access-log pattern='Time Taken:%T %I %h %l %u %t %r %s %b %I %{COOKIE}i %{SET-COOKIE}o' prefix="access_log_"/>

            </virtual-server>
</subsystem>
  • CLI を使用してこれらを追加するには、以下のコマンドを使用する必要があります (ドメイン設定では /profile=myProfile 接頭辞を使用)。
  /subsystem=web/virtual-server=<host>/configuration=access-log:add
  /subsystem=web/virtual-server=<host>/configuration=access-log:write-attribute(name=pattern,value="Time Taken:%T %I %h %l %u %t %r %s %b %I %{COOKIE}i %{SET-COOKIE}o")
  /subsystem=web/virtual-server=<host>/configuration=access-log:write-attribute(name=prefix,value="access_log_")

Apache の場合

Apache の httpd.conf で、以下の設定を、

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...(snip)...
CustomLog logs/access_log combined

以下のように変更します。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "Time Taken:%T %D %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{COOKIE}i\" \"%{SET-COOKIE}o\"" custom
...(snip)...
CustomLog logs/access_log custom

このように変更すると、生成されるアクセスログのフォーマットは一目で確認できるようになります。

注意: %T ログの応答時間 (単位は秒)。正確さを高める必要がある場合は、%D オプションを使用して、ログの応答時間をマイクロ秒にします。

Tomcat 6.x / 7.x の場合

  • Tomcat でアクセスログを有効にするには、Tomcat の server.xml ファイルで以下のコードを探します。
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->

そして、pattern="common"pattern="Time Taken: %T %h %l %u %t %r %s %b %{COOKIE}i %{SET-COOKIE}o" に変更します。変更すると xml は以下のようになります。

<Valve className="org.apache.catalina.valves.AccessLogValve"
       prefix="localhost_access_log." suffix=".log"
       pattern="Time Taken:%T %h %l %u %t %r %s %b %I %{COOKIE}i %{SET-COOKIE}o" directory="logs"
       resolveHosts="false" />

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.