LogicApps で追跡対象プロパティを利用して Log に任意のデータを出力する方法
LogicApps のデバッグって結構面倒ですよね。
四六時中実行しているようなフローを作成すると、時々どんな処理を得ているのか、外部からどんなデータを取得して、実行結果がどうなったのかをもう少しうまく把握したいシチュエーションがあります。
でも、LogicAppsの実行結果って成功か失敗かしか判別できず、細かな詳細を見たいときは一つ一つ実行結果を開いて確認する必要があるんですよね。
これがAzure Functionsとかなら、Azure Monitor(Log Analytics)にでもデータを出力するのに! と考えていたら、
そこで最近知った良い方法が 以下のLogicApps でのログ出力で追跡対象プロパティを設定するというものです。
これを使うことで、各アクションの実行結果もしくは入力データや固定メッセージをLog Analyticsに出力して、結果を分析しやすくなります。
前提条件
この機能は予めLogicApps をLog Analyticsワークスペースと紐付けて置く必要があります。
以下のWorkflowRuntimeを設定しておきましょう。
追跡対象プロパティの設定方法
追跡対象プロパティは各アクションの「設定」から登録します。
以下の部分ですね。
追跡対象プロパティは大きく分けて2つの設定方法があります。
一つは単純に固定メッセージを常に出力する方法です。
左側にProperty名、右側に出力メッセージを指定します。
もう一つは各関数を利用して動的に出力する方法です。
例えば対象のアクションに設定された値や出力結果の値をログに出力したい場合は「@action()」で取得できます。
「@action()」以降は入力(Inputs)と出力(Outputs)の2つのオブジェクトに別れて、
その後、それぞれのオブジェクト(未加工出力の表示)のデータにアクセスできるようになります。
例えば、上記のHTTPアクションの出力結果のステータスコードを追跡対象プロパティとしてログに吐き出したい場合は
「@action()['outputs']['statusCode']」になりますし
「@action()['outputs']['body']['args']['foo1']」といった形でレスポンスボディにアクセスすることも可能です。
出力結果の確認方法
出力結果はログの「AzureDiagnostics」から確認できます。
デフォルトでは項目が表示されないので「trackedProperties_XXXXX」で出力したプロパティ名を指定します。
項目を表示すると、以下のように結果が出力されていることが確認できます。