【Informatica CDI】セッションログの名前を変えてログ探索を簡略化しよう

【Informatica CDI】セッションログの名前を変えてログ探索を簡略化しよう

InformaticaのCloud Data Integrationでセッションログ名の変更をしてログ探索が楽になれば、トラブルシューティングがしやすくなります。
Clock Icon2024.10.25

はじめに

こんにちは、データ事業本部の渡部です。
今回はセッションログの名前を変える方法をご紹介します。

Informaticaでジョブがエラーになったとき、必ずと言っていいほど取得・調査するのがセッションログです。
もしもセッションログの名前がデフォルト設定のs_mtt_4T9GlhQDQM2ggEssLZ67MR_0.logのようになっていると、セッションログの探索に時間がかかってしまい思わぬ時間がかかって、夜眠る時間が8時間程度になってしまいます。
こんな状況を避けるために、ぜひ今回のセッションログの名前変更をしましょう。

設定

結論としては、マッピングタスクの詳細セッションプロパティでセッションログ名を任意の名前に変更することが可能です。

貼り付けた画像_2024_10_25_8_28

以下のドキュメントを参考にしました。
Advanced session properties

試してみた

デフォルト時のセッションログの出力が以下であるマッピングタスクを用意して検証していきます。

s_mtt_4T9GlhQDQM2ggEssLZ67MR_9_import.log
s_mtt_4T9GlhQDQM2ggEssLZ67MR_9.log

まずはセッションログファイル名のみの設定をしてみました。任意の文字列での設定もできますが、Informaticaで用意されている内部変数を使用します。
$CurrentTaskName_$CurrentTime_$CurrentRunId

貼り付けた画像_2024_10_25_7_38

この場合のセッションログ出力は以下のようになりました。
いい感じに出力されていそうです。

[infa@ip-10-10-0-151 logs]$ ls | grep mt_create_file_at_run_time_check_record
mt_create_file_at_run_time_check_records_1729809532000_51
mt_create_file_at_run_time_check_records_1729809532000_51_import

設定した変数は、以下のとおり動的に置き換えられています。

  • $CurrentTaskName:タスクの名前
  • $CurrentTime:実行時間(デフォルトだとエポック形式)
  • $CurrentRunId:実行ごとに振られるID

さて、今のままでも十分わかりやすくなりましたが、日付がエポック形式であることが気になります。
そのため次は日付フォーマットを変更してみます。
「カスタムプロパティ」で以下の値を入力します。

SessLogFileNameDateTimeFormat=YYYYMMddHHmmss

貼り付けた画像_2024_10_25_9_08

ドキュメントによると、日付フォーマットは下記のどれかから選択のようです。

  • YYYYMMddHHmmss
  • MMddYYYYHHmmss
  • ddMMYYYYHHmmss
  • YYYYMMddhhmmss
  • MMddYYYYhhmmss
  • ddMMYYYYhhmmss

https://knowledge.informatica.com/s/article/HOW-TO-Change-the-date-time-format-for-session-log-file-names?language=en_US&type=external

実行してみると、指定された日付フォーマットで出力されるように!

[infa@ip-10-10-0-151 logs]$ ls | grep mt_create_file_at_run_time_check_record | tail -n 2
mt_create_file_at_run_time_check_records_20241024190407_53
mt_create_file_at_run_time_check_records_20241024190407_53_import

なお出力されている日時はタイムゾーンの影響でJSTと13時間の差があります。
日付のタイムゾーンはInformatica Cloudのタイムゾーン(EST)となり、ここは変更できないようです。残念。

In Cloud Data Integration(CDI), the $CurrentTime parameter takes the IICS server timezone. Since the IICS server timezone is in the EST timezone, it takes that time while taking the session log file name.

https://knowledge.informatica.com/s/article/000216691?language=en_US&type=external

ログ名にJST+13のように追記することも考えたのですが、夏時間もありそうなので今回の設定は見送ります。

あとはセッションログの拡張子をつけたり、セッションログとわかるようにプレフィクスに「s」をつけてみました。
貼り付けた画像_2024_10_25_8_28

[infa@ip-10-10-0-151 logs]$ ls | grep mt_create_file_at_run_time_check_record | tail -n 2
s_mt_create_file_at_run_time_check_records_20241024191930_54_import.log
s_mt_create_file_at_run_time_check_records_20241024191930_54.log

綺麗に出力されました!
(import logの方は、「xxxx.log_import」と出力されるんだろうなあと思っていたので、ちゃんと期待どおりに出力されてびっくり)

まとめ

以下のとおりに設定してセッションログ名を書き換えました。

セッションログファイル名:s_$CurrentTaskName_$CurrentTime_$CurrentRunId.log
カスタムプロパティ:SessLogFileNameDateTimeFormat=YYYYMMddHHmmss

以上となります。
冒頭のとおり、セッションログの探索に非常に便利なのでぜひ開発標準に盛り込んでいただければと思います。
どなたかのご参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.