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

マスタデータ更新ログ

マスタデータ更新ログには、intra-mart Accel Platform で保持するマスタ情報に対して、更新処理(登録、更新、削除)に関する情報が出力されます。
また、トランザクションの開始、終了も出力し、トランザクション単位でのマスタ情報の更新結果を記録します。ログはすべてログレベルINFOで出力されます。
出力対象は、インポート・エクスポート、テナント管理、ジョブスケジューラ、ポータルモジュールの更新系のAPIのみです。
マスタデータ更新ログで出力するメッセージはすべてプロパティファイルから取得しています。メッセージが定義されているプロパティファイルの配置場所や、各APIが出力するメッセージの内容については、別紙「マスタデータ更新ログメッセージ一覧」を参照してください。
モジュール コアモジュール
設定場所 %CONTEXT_PATH%/WEB-INF/conf/log/im_logger_update_master_data.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
<included>

  <!--
     - MASTER_LOG
    -->
  <appender name="MASTER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${im.log}/platform/report/update_master_data.log</file>
    <append>true</append>

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

    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>${im.log}/platform/report/update_master_data%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]  %logger{255}  %X{tenant.id}  %X{log.id}  %X{request.id}  %X{client.session.id}  %X{masterlog.user.cd}  %X{request.remote.address}  %X{masterlog.transaction.id}  %X{masterlog.function.type}  [%X{log.message.code}]  %message  %X{masterlog.result}%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="MASTER_LOG" additivity="false">
    <level value="info" />
    <appender-ref ref="MASTER_FILE" />
  </logger>

</included>

制限事項

別紙「マスタデータ更新ログメッセージ一覧」に定義されていないAPIでマスタデータにアクセスした場合は、ログ出力の対象外です。
別紙「マスタデータ更新ログメッセージ一覧」に定義されていないAPI以外でマスタデータ更新ログの出力を行いたい場合は、 jp.co.intra_mart.system.log.masterlog.MasterLoglog() メソッドを利用してログ出力を行ってください。
トランザクション開始・終了ログは、intra-mart標準のトランザクション管理を利用している場合のみ出力されます。
intra-mart Accel Platform 標準のトランザクション管理機能を利用していない場合以下の問題が発生します。
  • トランザクション開始・終了ログは出力されません。
  • トランザクションIDが出力されません。
intra-mart Accel Platform 標準のトランザクション管理機能を利用せずにマスタデータ更新ログでトランザクションに関連する情報を出力するには
jp.co.intra_mart.system.log.masterlog.MasterLoglogBeginTransaction() メソッドまたは logFinishTransaction() メソッドを利用してトランザクションログの出力を行ってください。

内部統制対応

このログは、いつ、誰が、どこから、どのような操作を行ったか、その結果はどうなったのかを記憶することにより、内部統制における「モニタリング」の有効性を確保するための手段として利用が可能です。ただし、この機能では内部統制対応として必要最低限の情報のみ出力されるため、「制限事項」に記述されている制限が存在します。システムの監査基準に照らし合わせて足りない項目や処理については、ログ設定ファイルで必要な項目を出力するように設定する、または、「カスタマイズ」を行う必要があります。
ログの解析については「ログを解析する」を参照してください。

カスタマイズ

マスタデータ更新ログ機能では、jp.co.intra_mart.system.log.masterlog.MasterLog を使用してログの出力を行います。
このクラスでは、ログ出力時に必要なパラメータをMDCにセットし、引数のメッセージキーからメッセージを取得してログ出力を行います。
トランザクション管理処理では、トランザクション IDの生成やMDCへの登録・削除を行います。
詳細は jp.co.intra_mart.system.log.masterlog.MasterLog のAPIリストを参照してください。

トランザクション ID

トランザクションとAPIからのマスタ情報更新結果を結びつけるためのユニークなIDです。
実際にトランザクションが保持しているIDではなく、マスタデータ更新ログ専用のIDです。
マスタ情報更新処理のトランザクション IDが同一である場合、それらの処理は同一のトランザクションで行われています。
以下はトランザクション管理により、アカウント aoyagi に対しての複数の更新処理がロールバックされた場合のマスタデータ更新ログの出力結果です。(トランザクション ID、処理区分、メッセージ、更新結果を出力しています。)
5i4dh906hbb2m5c TB トランザクションを開始しました
5i4dh906hbb2m5c U  アカウント(aoyagi)を更新します。 成功
5i4dh906hbb2m5c U  アカウント(aoyagi)を更新します。 成功
5i4dh906hbb2m5c U  アカウント(aoyagi)を更新します。 失敗
5i4dh906hbb2m5c TR トランザクションをロールバックしました

ロガー名について

マスタデータ更新ログでは、ロガー名を以下のように定義しています。
  • 「識別名」 + 「APIのクラス名」
例)
AccountInfoManagerの場合
MASTER_LOG.jp.co.intra_mart.foundation.admin.account.AccountInfoManager
設定ファイルに個別にロガーを登録することで、APIごとにログの出力を抑制することが可能です。
AccountInfoManagerの更新結果を出力しない場合、以下を設定ファイルに追記します。
<logger name="MASTER_LOG.jp.co.intra_mart.foundation.admin.account.AccountInfoManager" additivity="false">
   <level value="off" />
</logger>

標準出力設定

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

出力パターン

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

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

利用可能なMDCキー

マスタデータ更新ログで利用可能なMDCのキーは以下の通りです。
MDCについては「MDC」を参照してください。
MDCキー 設定有無(初期値) 説明
log.id ログ ID
client.session.id セッション ID
masterlog.user.cd ユーザコード
masterlog.transaction.id トランザクション ID
masterlog.function.type
処理区分
C : 生成
U : 更新
D : 削除
TB : トランザクションの開始
TC : トランザクションのコミット
TR : トランザクションのロールバック
masterlog.result
更新結果
更新API単位での処理の成功/失敗を出力します。
request.id リクエスト ID
request.remote.address リモートアドレス
log.message.code ログメッセージコード
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) 以降、利用可能です。

コラム

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