SAP CPI のログレベル TRACE:自動でオフになる理由と、安全にオンのまま保つ方法
SAP CPI のログレベル TRACE が約 10 分で元に戻る理由、保存される内容と期間、本番でのリスク、そして作業中だけオンにしておく方法を解説します。

iFlow のログレベルを Trace にして、15 分ほどほかのテストをしてから肝心のメッセージを送ると、トレースが空になっている。SAP Cloud Integration(SAP CPI)が、いつの間にかレベルを元に戻していたのです。これは意図的な仕様で、理由がわかれば TRACE の使い方のルールも自然に見えてきます。
この記事では、各ログレベルが保存する内容、TRACE が期限切れになる理由、安全な使い方、そして作業している間だけちょうどオンにしておく方法を説明します。
ログレベルと、TRACE が加えるもの
| ログレベル | メッセージごとに残る内容 |
|---|---|
| Info | 全体のステータス、所要時間、エラー(ある場合) |
| Debug | メッセージが実行した各ステップのエントリ |
| Trace | Debug の内容に加えて、各ステップの前のボディ、header、exchange property |
レベルはデプロイ済みの iFlow に設定されるため、設定されている間は、その iFlow が処理するすべてのメッセージに適用されます。
TRACE が自動でオフになる理由
TRACE は、各ステップのペイロード、header、プロパティを tenant のデータベースに書き込みます。処理量の多い iFlow ではデータが大量になり、個人情報や機密情報が含まれることもあります。そのため SAP は時間で制限しています。TRACE レベルの有効期間は約 10 分で、その後 iFlow は低いレベルに戻り、トレースの内容自体は約 1 時間保持されます。
tenant によっては、TRACE をまったく許可しない設定になっていることもあります。その場合、誰が設定しようとしても失敗します。
TRACE を手動で設定する
- モニターで Manage Integration Content を開き、デプロイ済みの iFlow を選びます。
- ログ設定で、ログレベルを Trace にします。
- 10 分以内にテストメッセージを送り、1 時間以内にそのトレースを確認します。
- 作業が長引く場合は、10 分ごとに Trace を設定し直します。
TRACE を安全に使う
import com.sap.gateway.ip.core.customdev.util.Message
def Message processData(Message message) {
// Set the exchange property logPayload to "true" (for example from an
// externalized parameter) only while you investigate.
if (message.getProperty("logPayload") == "true") {
def log = messageLogFactory.getMessageLog(message)
log?.addAttachmentAsString("Payload before mapping", message.getBody(String), "text/plain")
}
return message
}- テストデータを優先しましょう。本番メッセージをトレースすると、その顧客のデータが 1 時間 tenant に保存されます。
- 本番では、疑問に答えるのに必要な最短の時間だけトレースし、社内の承認ルールに従ってください。
- iFlow の設定上のログレベルを Debug や Trace のままにしないでください。すべてのメッセージがその負担を負います。
- パスワードやトークンを header やプロパティに書かないでください。トレースに表示されてしまいます。
- ペイロードをログで定期的に確認する必要があるなら、スクリプトからメッセージ処理ログに添付し、それもスイッチがオンのときだけにします。
作業中だけ TRACE をオンにしておく
Kitegra では、開いている iFlow の「メッセージ」パネルに「Trace: オフ」と表示されたスイッチがあります。1 回クリックするとログレベルが TRACE になります。スイッチがオンで、その iFlow のデザイナーのタブが開いている間、拡張機能は SAP が戻す前に 9 分ごとに TRACE を設定し直し、その iFlow での最後の操作から 20 分たつと止めます。オフにすると、iFlow の元のレベルに戻ります。この状態はページを再読み込みしても保たれ、Alt+Shift+R でキーボードから切り替えられます。
iFlow が選んだランタイムにデプロイされていない場合、tenant が TRACE を許可していない場合、オプションで「テナントを変更する操作を許可」がオフの場合は、わかりやすいメッセージを出して実行を拒否します。
トレースが記録した内容を読むには、ダイアグラム上でメッセージをステップごとにトレースするを参照してください。
Kitegra でできること
Trace は、Kitegra で tenant を変更する 4 つの操作の 1 つで、クリックしたときだけ実行されます。本番稼働の前には、iFlow Inspector の設計チェック「詳細すぎるログレベル」が、設定上のログレベルがすべてのメッセージをトレースまたはデバッグしてしまう iFlow を指摘します。ほかのチェックとあわせて iFlow レビューのチェックリストで取り上げています。
Helper、Message Monitor、iFlow Inspector、iFlow Docs は、それぞれ使用した iFlow の数をカウントします。Kitegra アカウントなしではモジュールごとに 5 つ、Free プランでは 50、Starter では 100、Pro では 300 で、Business は上限なしです。Toolbox とワークスペースの追加機能は無料です。プランを比較する。
次の iFlow で試してみましょう
Kitegra が SAP Integration Suite のデザイナーに何を加えるのかを読むか、Kitegra のほかの Chrome 拡張機能と並べて確認できます。
よくある質問
SAP CPI で TRACE が自動でオフになるのはなぜですか?
TRACE は各ステップのペイロードを tenant に保存します。データ量を抑えるため、SAP は TRACE レベルを約 10 分、トレースの内容を約 1 時間だけ保持します。
トレースのデータはどのくらい保持されますか?
約 1 時間です。その後もメッセージのログは残りますが、トレースされたボディ、header、プロパティは消えます。
本番で TRACE を使っても安全ですか?
tenant に実際のペイロードが保存されるので、疑問に答えるのに必要な最短の時間だけ、できるだけテストデータで、社内のルールに従って使ってください。
Debug と Trace の違いは何ですか?
Debug は各ステップのエントリを記録します。Trace はさらに、各ステップの前のボディ、header、exchange property を加えます。
自分の tenant で TRACE の設定が失敗するのはなぜですか?
tenant が TRACE を許可していない、iFlow がそのランタイムにデプロイされていない、またはユーザーに必要なロールがない、といった可能性があります。拡張機能では、オプションで tenant を変更する操作がオフになっていることもあります。
作業をやめた後も、拡張機能は TRACE をオンのままにしますか?
いいえ。TRACE を更新するのは、スイッチがオンでその iFlow で作業している間だけで、最後の操作から 20 分で止まります。