intra-mart Accel Platform ログ仕様書 第12版 2019-12-01

画面遷移ログ

画面遷移ログには、利用者の操作により行われる画面遷移の情報が出力されます。
モジュール コアモジュール
設定場所 %CONTEXT_PATH%/WEB-INF/conf/log/im_logger_transition.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<included>

  <!--
     - TRANSITION_LOG
    -->
  <appender name="TRANSITION_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${im.log}/platform/transition.log</file>
    <append>true</append>

    <!--
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>
        ${im.log}/platform/transition-%d{yyyy-MM-dd}.log
      </fileNamePattern>
    </rollingPolicy>
    -->

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${im.log}/platform/transition%i.log</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>5</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
      <maxFileSize>10MB</maxFileSize>
    </triggeringPolicy>

    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
      <layout class="jp.co.intra_mart.common.platform.log.layout.OutputStackTracePatternLayout">
        <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]  [%thread]  %X{log.report.sequence}  %-5level  %logger{255}  %X{tenant.id}  %X{log.id}  -  %X{transition.log.type.id}  %X{request.remote.address}  %X{request.remote.host}  %X{transition.access.user.id}  %X{client.session.id}  %X{transition.path.page.next}  %X{transition.time.response}  %X{transition.exception.name}  %X{transition.exception.message}  %X{transition.path.page.previous}  %X{request.id}%nopex%n</pattern>

        <enableOutputStackTrace>true</enableOutputStackTrace>
        <stackTraceDir>${im.log}/platform/exception/</stackTraceDir>
        <stackTraceFilename>'exception_'yyyy-MM-dd_HH-mm-ss'_%logId.log'</stackTraceFilename>
      </layout>
    </encoder>
  </appender>

  <logger name="TRANSITION_LOG" additivity="false">
    <level value="info" />
    <appender-ref ref="TRANSITION_FILE" />
  </logger>

</included>

遷移タイプによる挙動の違いについて

MDCにより取得可能な遷移元画面のパス、および、遷移先画面のパスは以下のように出力されます。
遷移タイプ 遷移元画面のパス 遷移先画面のパス
REQUEST HTTP ヘッダ「Referer」のサーブレットパス部分(HTTP ヘッダ「Referer」が取得できない場合は出力されません) URL のサーブレットパス部分
FORWARD RequestDispatcher#forward() を実行する前の遷移先画面パス ServletRequest#getRequestDispatcher() 時に指定したパス
INCLUDE RequestDispatcher#include() を実行する前の遷移先画面パス ServletRequest#getRequestDispatcher() 時に指定したパス
いずれの遷移タイプでも、遷移元画面、および、遷移先画面がスクリプト開発モデルである場合には、スクリプト開発モデルの画面のパスが出力されます。
例えば、3 つの JSP 「1_request.jsp」、「2_forwarded.jsp」、「3_included.jsp」が存在し、「1_request.jsp」 から 「2_forwarded.jsp」へforwardし、forward先の「2_forwarded.jsp」 内で 「3_included.jsp」 をincludeする場合、遷移元画面、および、遷移先画面のパスは以下のように出力されます。
(なお、この時のリクエスト ID は、同一の ID が出力されます。)
../../_images/transition_example.png
出力順 遷移タイプ 遷移元画面のパス 遷移先画面のパス
1 REQUEST
1_request.jsp
2 FORWARD 1_request.jsp 2_forwarded.jsp
3 INCLUDE 2_forwarded.jsp 3_included.jsp
応答時間は、遷移タイプによって出力される値が異なります。
REQUEST リクエストの処理開始から、レスポンスを返却するまでの時間をあらわします。
FORWARD リクエストの処理開始から、FORWARD した時点 (=ディスパッチ前の時点)までの時間をあらわします。
INCLUDE リクエストの処理開始から、INCLUDE した時点(=ディスパッチ前の時点)までの時間をあらわします。

注意

遷移タイプ FORWARD、および、INCLUDE のログは、ServletRequest#getRequestDispatcher() で取得した RequestDispatcher を利用してforward/includeされた場合に出力されます。(ServletContext 経由で RequestDispatcher を取得した場合は出力されません)

標準出力設定

ログレベル(初期値) INFO
出力先(初期値)
コンソール
ファイル - ${im.log}/platform/transition.log

出力パターン

利用可能なパターン文字列

画面遷移ログで利用可能なパターン文字列は以下の通りです。
パターン文字列については「パターン文字列」を参照してください。
フォーマット文字列 設定有無(初期値) 説明
%d 出力日時
%thread スレッド名
%level ログレベル
%logger ロガー名
%X
利用可能なキーは「利用可能なMDCキー」を参照してください。

利用可能なMDCキー

画面遷移ログで利用可能なMDCのキーは以下の通りです。
MDCについては「MDC」を参照してください。
MDCキー 設定有無(初期値) 説明
log.thread.group × スレッドグループ
log.report.sequence ログ出力順序番号
log.id ログ ID
client.session.id セッション ID
transition.log.type.id
遷移タイプ
REQUEST : 通常のリクエスト
FORWARD : javax.servlet.RequestDispatcher#forward() 時の遷移
INCLUDE : javax.servlet.RequestDispatcher#include() 時の遷移
transition.access.user.id ユーザコード
transition.path.page.next 遷移先画面のパス
transition.path.page.previous 遷移元画面のパス
transition.time.response 応答時間
transition.exception.name 例外名
transition.exception.message 例外メッセージ
request.remote.host
リモートホスト
intra-mart Accel Platform 2015 Winter(Lydia) で出力方式が変更されました。 詳しくは「 リクエストログ 」の「 利用可能なMDCキー 」を参照してください。
request.remote.address
リモートアドレス
intra-mart Accel Platform 2015 Winter(Lydia) で出力方式が変更されました。 詳しくは「 リクエストログ 」の「 利用可能なMDCキー 」を参照してください。
request.id リクエスト ID
user.cd ×
ログ出力時のアカウントコンテキストのユーザコード
intra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。
user.type ×
ログ出力時のアカウントコンテキストのユーザ種別
administrator : システム管理者
platform : ジョブなどのバックグラウンド
user : 一般ユーザ
intra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。
tenant.id
ログ出力時のアカウントコンテキストのテナント ID
intra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。
authenticated ×
ログ出力時のアカウントコンテキストの認証状態
true : 認証済み
false : 未認証
intra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。
client.type ×
ログ出力時のクライアントコンテキストのクライアントタイプ
pc : PC
sp : スマートフォン
intra-mart Accel Platform 2017 Winter(Rebecca) 以降、利用可能です。

コラム

アカウントコンテキストの詳細については、「アカウントコンテキストのJavaDoc」を参照してください。

コラム

クライアントコンテキストの詳細については、「ClinetContextコンテキストのJavaDoc」を参照してください。