Cloud Logging にログを送信する

Workflows では、Cloud Logging でのワークフロー実行のログは自動生成されません。代わりに、ワークフローの実行中にログを Logging に送信するタイミングを管理します。Logging に送信するために選択するログは、カスタムログと呼ばれます。 これらのログは、ワークフローをデバッグするときに特に役立ちます。

ロギングに必要な権限

カスタムログを Logging に送信するには、logging.logEntries.create 権限(たとえば、roles/logging.logWriter ロール)を含むサービス アカウントにワークフローを関連付ける必要があります。ワークフローでサービス アカウントを最新に変更する必要がある場合は、ワークフローの更新をご覧ください。サービス アカウントの作成とロールの割り当てに関する詳細は、プロジェクト、フォルダ、組織へのアクセスの管理をご覧ください。

実行中にログエントリを作成する

ワークフローの実行中にログエントリを作成するには次の 2 つの方法があります。コールログを適用するか、sys.log 関数を使用できます。

通話ログを適用

フラグを設定して、ワークフローの実行中に各呼び出しステップがログに記録され、ステップ名、関数名、関数引数、呼び出しレスポンスが返されます。または、呼び出しを停止した例外をログに記録することもできます。

明示的な呼び出しステップのみがログに記録されます。たとえば、サブワークフローやライブラリ関数の呼び出しです。式内または標準ライブラリ関数(sys.loghttp.post など)とコネクタ内部からの呼び出しはログに記録されません。

コールロギングを適用するには、Google Cloud Console または gcloud コマンドライン ツールを使用します。

Console

  1. Google Cloud Console の [ワークフロー] ページに移動します。
    ワークフローに移動

  2. [ワークフロー] ページで、ワークフローを選択して詳細ページに移動します。

  3. [ワークフローの詳細] ページで [ 実行] を選択します。

  4. 必要に応じて、[ワークフローの実行] ページで、ワークフローの実行中に適用するコールロギングのレベルを指定できます。

    [ログ呼び出し] プルダウン リストで、次のいずれかを選択します。

    • none: コールロギングなし。これがデフォルトのレベルです。
    • log-all-calls: サブワークフローまたはライブラリ関数のすべての呼び出しとその結果をログに記録します。
    • log-errors-only: 例外のために呼び出しが停止した場合にのみログに記録されます。
  5. [実行] をクリックします。

gcloud

ワークフローを実行し、実行が完了するまで待機するには、次のコマンドを入力します。

gcloud workflows run WORKFLOW_NAME \
    --call-log-level=CALL_LOGGING_LEVEL \
    --data=DATA

実行の試行を待たずにワークフローを実行するには、次のコマンドを入力します。

gcloud workflows execute WORKFLOW_NAME \
    --call-log-level=CALL_LOGGING_LEVEL \
    --data=DATA

次のように置き換えます。

  • WORKFLOW_NAME: ワークフローの名前。
  • CALL_LOGGING_LEVEL: 省略可。実行中に適用するコールロギングのレベル。
      には、いずれか 1 つを設定できます。
    • none: コールロギングなし。これがデフォルトのレベルです。
    • log-all-calls: サブワークフローまたはライブラリ関数のすべての呼び出しとその結果をログに記録します。
    • log-errors-only: 例外のために呼び出しが停止した場合のみログに記録します。
  • DATA: 省略可。ワークフローのランタイム引数(JSON 形式)。

sys.log 関数を使用する

ワークフローの実行中に Logging でログエントリを作成するには、標準ライブラリ sys.log 関数を呼び出すステップをワークフローに定義します。

YAML

  - step1:
      assign:
          - varA: "Hello"
          - varB: "World"
  - logStep:
      call: sys.log
      args:
          text: TEXT
          severity: SEVERITY 
  - step2:
      return: ${varA + " " + varB}
    

JSON

    [
      {
        "step1": {
          "assign": [
            {
              "varA": "Hello"
            },
            {
              "varB": "World"
            }
          ]
        }
      },
      {
        "logStep": {
          "call": "sys.log",
          "args": {
            "text": "TEXT",
            "severity": "SEVERITY"
          }
        }
      },
      {
        "step2": {
          "return": "${varA + " " + varB}"
        }
      }
    ]
      

ログエントリの作成時に、以下を定義します。

  • TEXT: 必須。ログに記録されるテキスト。マップの値をログに記録する必要がある場合は、${json.encode_to_string(myMap)} を使用します。
  • SEVERITY: 省略可。ログエントリの重大度。たとえば、INFOWARNINGCRITICAL などです。

詳細については、sys.log関数リファレンスをご覧ください。

カスタム ワークフロー ログを表示する

カスタムログは、ワークフローかロギングに表示できます。1 つのワークフローのカスタムログを表示するには、ワークフローで [ログ] タブを使用します。すべてのワークフローのカスタムログの集計ビューを取得するには、ロギングの [ログ エクスプローラ] ページを使用します。

Workflows でログを表示する

ワークフローでワークフローのカスタムログを表示するには:

  1. Cloud Console の [Workflows] ページに移動します。
    [Workflows] に移動

  2. ワークフローのカスタムログにアクセスするには、ワークフローの名前をクリックして [詳細] ページに移動します。

  3. カスタムログを表示するには、[ログ] をクリックします。

  4. 重大度でログをフィルタするには、[デフォルト] リストで、表示するログのタイプを選択します。デフォルトでは、すべての重大度のログが表示されます。

ワークフローの [詳細] ページの [ログ] タブに、次のタイプのログが表示されます。

  • Logging に送信されたカスタムログ

  • ワークフローの定義の更新など、ワークフローで実行されるオペレーションの監査ログ

Logging でログを表示する

Logging でカスタムログを表示するには:

  1. Cloud Console の [ログ エクスプローラ] ページに移動します。
    ログ エクスプローラに移動する

  2. クエリビルダーで、[リソース] をクリックして「workflow」と入力します。リストから [Cloud Workflow] を選択し、[Add] をクリックします。

    ワークフローのロギング

  3. [実行] をクリックします。

Logging でログを表示する方法の詳細については、ログ エクスプローラの使用をご覧ください。

次のステップ