ViewCreator の操作ログ機能で利用状況とパフォーマンスを把握する(2025 Autumn〜)

はじめに

intra-mart Accel Platform の ViewCreator には、操作内容をファイルに記録する「操作ログ」機能があります。このログには、誰がいつどのデータ参照を実行したか、処理にどれくらいの時間がかかったかといった情報が含まれています。この機能は 2025 Autumn (8.0.38) で追加されました。

本記事では、この操作ログを使って ViewCreator の利用状況を把握する ための具体的な活用例をご紹介します。

前提条件

操作ログ機能の概要と出力設定については、以下のドキュメントを参照してください。

intra-mart Accel Platform ViewCreator 管理者操作ガイド - 操作ログ

ログファイルは、アプリケーションサーバの以下のパスに出力されます。

WEB-INF/log/product/viewcreator/viewcreator-operation.log

ログの見方

操作ログは1行1レコードのタブ区切り形式で出力されます。以下は出力例です。

クエリ実行の例(INFO)

2026-06-01 02:49:15.340 resin-port-8080-119 INFO    5jhs7m90nf0hi   8i141rrm6ja8j80 tenant  5i7o4o3kli1pj       EXECUTE QUERY   4   0   1   default {drilldownParameters=[], searchParameters=[], sortParameters=[], startRow=1, length=300}    処理が正常に完了しました。

→ ユーザ tenant がクエリ(5i7o4o3kli1pj)を実行し、4ms で正常完了。検索・ドリルダウン条件なし。

リスト集計実行の例(INFO)

2026-05-29 05:57:47.808 resin-port-8080-132 INFO    5jhrak0fmcggh   8i0zy6odrzi5180 maruyama    5i7o4o3kli1pj   sample_japan_list   EXECUTE LIST_DATAVIEW   24  1   1   default {drilldownParameters=[], searchParameters=[{columnCode=ccd00003, keyword=島}], sortParameters=[], startRow=1, length=0}  処理が正常に完了しました。

→ ユーザ maruyama がデータ参照 sample_japan_list をキーワード「島」で検索して実行し、24ms で正常完了。

エクスポートの例(INFO)

2026-06-01 02:48:15.839 resin-port-8080-129 INFO    5jhs7m8yin3fb   8i141qh1yja6w80 sekine  5i7o4o3kli1pj   sales_report_monthly    EXPORT  SUMMARY_DATAVIEW    803 0   1   default {drilldownParameters=[], searchParameters=[], sortParameters=[], startRow=0, length=0}  処理が正常に完了しました。

→ ユーザ sekine がデータ参照 sales_report_monthly を全件エクスポートし、803ms で正常完了。EXPORT では件数取得処理は行われないため、フィールド#12 は 0 になる。合計時間にはデータ取得に加えてエクスポートファイルの生成処理(Excel ライブラリの初期化やファイル書き込みなど)も含まれるため、データ取得時間との乖離が生じることがある。

処理時間超過の例(WARN)

2026-06-01 02:31:35.458 resin-port-8080-123 WARN    5jhs7m7yi1u1r   8i1414ek3mcpf80 sekine  5i7o4o3kli1pj   sales_report_monthly    EXECUTE SUMMARY_DATAVIEW    30171   14854   15230   default {drilldownParameters=[], searchParameters=[], sortParameters=[], startRow=1, length=0}  総実行時間が閾値を超過しました。 閾値:10000ms 実際:30171ms

→ ユーザ sekine がデータ参照 sales_report_monthly を実行。件数取得に 14,854ms、データ取得に 15,230ms を要し、合計 30,171ms で閾値(10,000ms)を超過。件数取得・データ取得・合計実行時間のいずれも閾値を超過しているため、この操作では合計3行の WARN が出力される。

各フィールドの意味は以下のとおりです。

# 項目 内容
1 タイムスタンプ ログ出力日時 2026-05-29 05:57:47.808
2 スレッド情報 処理スレッド名 resin-port-8080-132
3 ログレベル INFO / WARN INFO
4 ログID 処理追跡用ID 5jhrak0fmcggh
5 リクエストID リクエスト識別子 8i0zy6odrzi5180
6 ユーザコード 操作を実行したユーザ maruyama
7 クエリコード データ参照に紐づくクエリのコード。QUERY・QUERY_ROUTE 型では実行クエリのコード 5i7o4o3kli1pj
8 データ参照コード 実行対象のデータ参照コード。QUERY・QUERY_ROUTE 型は空 sample_japan_list
9 操作 EXECUTE / EXPORT EXECUTE
10 種別 QUERY / LIST_DATAVIEW / SUMMARY_DATAVIEW / CROSS_DATAVIEW / GRAPH_DATAVIEW / QUERY_ROUTE LIST_DATAVIEW
11 実行時間(ms) 処理全体の実行時間 32573
12 件数取得時間(ms) 件数取得処理の実行時間 14433
13 データ取得時間(ms) データ取得処理の実行時間 13822
14 接続ID 使用した接続ID default
15 パラメータ情報 検索・ソート条件 {searchParameters=[...]}
16 メッセージ 処理結果のメッセージ 処理が正常に完了しました。

操作(#9)と種別(#10)の主な組み合わせは以下のとおりです。

操作(#9 + #10) 説明
EXECUTE QUERY クエリ型データ参照の実行(プレビュー)
EXECUTE QUERY_ROUTE ルーティング定義の実行
EXECUTE LIST_DATAVIEW リスト集計型データ参照の実行
EXECUTE SUMMARY_DATAVIEW サマリ集計型データ参照の実行
EXECUTE CROSS_DATAVIEW クロス集計型データ参照の実行
EXECUTE GRAPH_DATAVIEW グラフ集計型データ参照の実行
EXPORT LIST_DATAVIEW リスト集計型データ参照のエクスポート
EXPORT SUMMARY_DATAVIEW サマリ集計型データ参照のエクスポート

なお、件数取得・データ取得・合計実行時間のいずれかが設定した閾値(デフォルト: 件数取得5,000ms・データ取得5,000ms・合計実行時間10,000ms)を超えた場合はログレベルが WARN になります。また、操作ログと同じディレクトリ配下の exception/ サブディレクトリに詳細情報を記録した別ファイルが出力されます。件数取得・データ取得時間超過の場合は実行されたSQL文とスタックトレースが、合計実行時間超過の場合はスタックトレースのみが含まれます。ファイル名にはログID(フィールド#4)が含まれるため、操作ログの該当行と紐付けることができます。

WEB-INF/log/product/viewcreator/exception/exception_<タイムスタンプ>_<ログID>.log

閾値は WEB-INF/conf/viewcreator-config.xmllog > threshold-settings で変更できます(2025 Autumn(Lilac) 以降)。詳細は設定ファイルリファレンスを参照してください。

<log>
  <threshold-settings>
    <count-retrieval-threshold>5000</count-retrieval-threshold>   <!-- 件数取得処理時間の閾値(ms) -->
    <data-retrieval-threshold>5000</data-retrieval-threshold>     <!-- データ取得処理時間の閾値(ms) -->
    <total-execution-threshold>10000</total-execution-threshold>  <!-- 合計実行時間の閾値(ms) -->
  </threshold-settings>
</log>

環境の性能特性に合わせてこれらの値を調整することで、検知感度をコントロールできます。

活用例

タイムスタンプ(#1)・ユーザコード(#6)・データ参照コード(#8)・操作種別(#9/#10)・実行時間(#11〜#13)を組み合わせることで、利用頻度・ユーザ別実績・エクスポート記録・時間帯分布など、さまざまな観点での分析が可能です。ログレベル(#3)が WARN の行は性能上の問題を示しており、パラメータ情報(#15)と合わせて検索条件や実行パターンを確認できます。

データ参照の利用頻度確認

操作(#9)が EXECUTE の行をデータ参照コード(#8)で集計することで、よく使われているデータ参照を確認できます。クエリ型はデータ参照コードが空になるため除外しています。

awk -F'\t' '$9 == "EXECUTE" && $8 != "" {print $8}' viewcreator-operation.log | sort | uniq -c | sort -rn

出力例

     25 5i7urzmlbc9svp4
     14 5i7urzmrwxmufp4
      6 5i7ur3pq6a08cp4
      5 5i7urzmesvqqip4

ユーザ別の実行回数確認

ユーザコード(#6)で集計することで、どのユーザが何回操作したかを確認できます。

awk -F'\t' '$9 == "EXECUTE" {print $6}' viewcreator-operation.log | sort | uniq -c | sort -rn

出力例

     25 tenant
     14 aoyagi
      9 maruyama
      4 sekine

エクスポート操作の確認

操作(#9)が EXPORT の行を抽出することで、誰がどのデータ参照をいつエクスポートしたかを一覧できます。

awk -F'\t' '$9 == "EXPORT" {print $1, $6, $8}' viewcreator-operation.log

出力例

2026-06-01 02:48:12.543 sekine 5i7urzmesvqqip4
2026-06-01 02:48:15.839 sekine 5i7urzmesvqqip4
2026-06-01 02:48:23.315 sekine 5i7urzmesvqqip4

パフォーマンス問題の調査

実行時間が閾値を超えた操作はログレベルが WARN になります。件数取得・データ取得・合計実行時間の閾値はそれぞれ独立して評価されるため、1回の操作で複数の閾値を超過した場合は最大3行の WARN 行が出力されます。

WARN が発生した操作に対しては、閾値ごとに1つの例外ファイルが exception/ ディレクトリに出力されます。操作ログの WARN 行に記録されたログID(フィールド#4)とファイル名が一致するため、対応するファイルを特定できます。

件数取得・データ取得時間超過の場合

SlowSQLExecutionException とともに実行された SQL 文が記録されています。

log.generating.time=Mon Jun 01 02:31:35 UTC 2026
log.level=WARN
log.logger.name=VIEWCREATOR_OPERATION_LOG
log.id=5jhs7m7yhzo1q
log.thread.id=resin-port-8080-123
log.thread.group=main
log.message=データ取得処理時間が閾値を超過しました。 閾値:5000ms 実際:15230ms

jp.co.intra_mart.system.viewcreator.log.exception.SlowSQLExecutionException: Execution time exceeded threshold. Execution time: 15230ms
SQL: SELECT TEMP1___.* FROM (SELECT ccd00001, ccd00002, ccd00003, AVG(ccd00005) AS ccd00005, SUM(ccd00006) AS ccd00006 FROM ( SELECT
     sample_population.year AS ccd00001,
     sample_region.name AS ccd00002,
     ...

ViewCreator が実際に発行した SQL そのものが記録されているため、EXPLAIN による実行計画の確認や、インデックスの有無・適用状況の見直しに直接活用できます。

まとめ

  • 各フィールドを組み合わせることで多様な分析が可能

    • ユーザコード・データ参照コード・操作種別・実行時間・タイムスタンプを軸に、利用頻度・ユーザ別実績・エクスポート記録などを把握できます。
  • WARNログで性能問題を早期に検知できる

    • 実行時間が閾値を超えた操作は WARN レベルで記録されます。繰り返し WARN が出るデータ参照を優先的に調査・最適化することで、システム全体のパフォーマンス改善につなげられます。
  • 例外ログでSQL確認・原因調査ができる

    • 件数取得・データ取得の超過ではSQL文が記録されるため、実行計画の見直しやインデックス追加の判断材料として活用できます。