画面遷移ログ¶
画面遷移ログには、利用者の操作により行われる画面遷移の情報が出力されます。
モジュール コアモジュール 設定場所 %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 が出力されます。)
出力順 遷移タイプ 遷移元画面のパス 遷移先画面のパス 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
出力パターン¶
利用可能なパターン文字列¶
利用可能な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 ○ ログ出力時のアカウントコンテキストのテナント IDintra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。authenticated × ログ出力時のアカウントコンテキストの認証状態true : 認証済みfalse : 未認証intra-mart Accel Platform 2014 Spring(Granada) 以降、利用可能です。client.type × ログ出力時のクライアントコンテキストのクライアントタイプpc : PCsp : スマートフォンintra-mart Accel Platform 2017 Winter(Rebecca) 以降、利用可能です。コラム
アカウントコンテキストの詳細については、「アカウントコンテキストのJavaDoc」を参照してください。
コラム
クライアントコンテキストの詳細については、「ClinetContextコンテキストのJavaDoc」を参照してください。