ユーザー データ関数のログを表示する

ログは、ユーザー データ関数がどのように実行されているかを理解し、関数が期待どおりに動作しない場合の問題を診断するのに役立ちます。 ログは、次の 2 つの方法で表示できます。

  • テスト中 - 開発モードで関数をテストするときに、テスト パネルでリアルタイム ログを表示する
  • 呼び出し後 - 呼び出 された発行済み関数の履歴ログを表示する

この記事では、ログを表示して使用して関数の実行を監視し、問題のトラブルシューティングを行う方法について説明します。

テスト中にログを表示する

関数をテストすると、関数の実行時にリアルタイムでログを確認できます。

  • 開発モードのテスト パネル - 発行されていない関数または発行済み関数をテストするときにログを表示する
  • 実行専用モードでパネルを実行 する - 発行済み関数の実行時にログを表示する

どちらのパネルもログ出力をすぐに表示し、実行の詳細を確認し、問題が発生したときにデバッグすることができます。 関数のテストの詳細については、「 ユーザー データ関数のテスト」を参照してください。

呼び出された関数の履歴ログを表示する

発行された関数が呼び出されたら、履歴ログを表示して過去の実行を分析できます。

履歴ログにアクセスするには:

  1. モード スイッチャーを使用して 、実行専用モード に切り替えます。

  2. 関数の一覧の関数名にカーソルを合わせます。

  3. 省略記号アイコン (...) を選択し、[ 履歴ログの表示] を選択します。

    関数の履歴ログを表示する方法を示すスクリーンショット。

履歴ログ ビューを理解する

履歴ログ ビューには、選択した関数の最近の呼び出しが表示されます。 最大 50 個のエントリを表示でき、ログは 30 日間保持されます。 特定の呼び出しの詳細なログを表示するには、 日付 (UTC) 列の日付リンクを選択します。

日付順に並べ替えられた関数のすべての呼び出しを表示する方法を示すスクリーンショット。

[ すべての履歴ログ ] ウィンドウには、呼び出しごとに次の情報が含まれています。

  • 日付 (UTC)。 関数呼び出しの開始を示すタイムスタンプ。 リンクを選択して、その呼び出しのすべてのログを確認します。 ユーザーまたはサービスによってログに記録されたすべてのメッセージを含む呼び出しの詳細が表示されます。
  • 状態。 呼び出しが成功したか失敗したかを示します。
  • 期間 (ミリ秒)。 関数実行の期間 (ミリ秒)。
  • 呼び出し ID。 その特定の関数呼び出しの ID。 呼び出し ID は、HTTP ヘッダーの一部として返されます。 問題がある場合、ユーザーはサポート リクエストでこの呼び出し ID を参照して、呼び出しに関する詳細情報を取得できます。

特定の呼び出しの詳細なログを表示する

(前のセクションで説明したように) ログ履歴ビューを開いた後、個々の呼び出しにドリルダウンできます。 日付 (UTC) 列でタイムスタンプ リンクを選択すると、[呼び出しの詳細] ウィンドウが開き、その呼び出しのすべてのログが表示されます。 以下を表示できます。

  • logging モジュールを使用して関数コードに追加されたすべてのログ
  • 関数の実行に関するシステム生成ログ
  • 発生したエラーまたは例外

各ログ エントリには、タイムスタンプ、ログ メッセージ、ログ レベル (情報、警告、エラー、重大) が含まれます。

特定の関数呼び出しの詳細ログを表示する方法を示すスクリーンショット。

関数にログ記録を追加する

Python の標準の logging モジュールを使用して、カスタム ログ ステートメントを関数に追加できます。 ログは、関数の動作の追跡、データ処理の監視、問題の診断に役立ちます。

ログ モジュールをインポートする

まず、 logging モジュールを関数コードにインポートします。

import logging

注

logging モジュールは、ファブリック ポータルで新しいユーザー データ関数項目を作成するとき、または VS Code 拡張機能を使用すると、既定でインポートされます。

適切なログ レベルを使用する

Python では、状況ごとに異なるログ レベルが提供されます。 適切なレベルを使用して、ログをより意味のあるものにします。

# INFO - Track normal function execution and key steps
logging.info('Processing started for customer ID: 12345')
logging.info('Successfully retrieved 150 records from database')

# WARNING - Log potentially problematic situations that don't prevent execution
logging.warning('API response time exceeded 2 seconds')
logging.warning('Using cached data because fresh data is unavailable')

# ERROR - Log errors that affect functionality but don't crash the function
logging.error('Failed to connect to external API: Connection timeout')
logging.error('Invalid data format in row 42')

# CRITICAL - Log severe errors that may cause function failure
logging.critical('Database connection lost')
logging.critical('Required configuration parameter missing')

ログ記録のベスト プラクティス

ログの効果を高めるために、次のプラクティスに従います。

  • 意味のある情報をログ に記録する - 問題の診断に役立つ ID、カウント、パラメーター値などの関連する詳細を含める
  • 適切なログ レベルを使用 する - 情報またはエラーとしてすべてをログに記録しないでください。状況に適したレベルを使用する
  • キー ポイントでログを記録 する - 関数の開始時、外部呼び出しの前後、およびデータの処理時にログを追加する
  • 機密データのログ記録を回避 する - パスワード、トークン、個人情報、またはその他の機密データをログに記録しない
  • メッセージを簡潔に保つ - スキャンしやすい明確で簡潔なログ メッセージを記述する
  • ボリュームに注意 する - 過剰なログ記録はパフォーマンスに影響を与え、1 日あたりのインジェストの上限に達する可能性があります

関数コードの記述の詳細については、 Python プログラミング モデルを参照してください。

制限事項とログリテンション期間

ログを操作するときは、次の制限事項に注意してください。

  • ログの保持 - 呼び出し履歴ログは既定で 30 日間保持されます
  • 表示されるエントリ - 履歴ログ ビューには、関数あたり最大 50 個のエントリが表示されます
  • ログの可用性 - 呼び出しログが表示されるまでに数分かかる場合があります。最近のログが表示されない場合はページを更新する
  • 1 日あたりのインジェスト制限 - 1 日あたり 250 MB。制限は毎日リセットされます
  • サンプリング - 統計的に正しい分析を維持しながら、ボリュームを減らすためにログをサンプリングできます
  • サポートされているログの種類 - 情報、エラー、警告、トレース

完全なサービス制限情報については、「 サービスの詳細と制限事項」を参照してください。