関数とプロシージャからのメッセージのログ

Snowpark APIs を使用して 記述したものを含む、ストアドプロシージャ、 UDF、または UDTF からのメッセージ(警告メッセージやエラーメッセージなど)をログできます。ログされたメッセージには、 イベントテーブル (ログされたメッセージを含むイベントをキャプチャする事前定義されたテーブルの一種)からアクセスできます。サポートされているハンドラー言語のリストについては、 サポートされている言語 をご参照ください。

たとえば、Java UDF では、 SLF4J API を使用してメッセージをログできます。後で、イベントテーブル内のログされたメッセージにアクセスできます。

注釈

メッセージのログを開始する前に、イベントテーブルを設定する必要があります。詳細については、 イベントテーブルの設定 をご参照ください。

ログの例

次の例のPythonコードは、 logging モジュールをインポートし、ロガーを取得し、 INFO レベルでメッセージをログします。

注釈

入力行を処理するメソッドからログされるメッセージは、 UDF によって処理される 行ごと にログされます。UDF が大きなテーブルで実行されると、イベントテーブルに多数のメッセージが生成される可能性があります。

import logging

logger = logging.getLogger("mylog")

def test_logging(self):
    logger.info("This is an INFO test.")
Copy

はじめるにあたり

ハンドラーコードからログを開始するには、次の高レベルのステップに従います。

  1. イベントテーブルを設定します。

    Snowflakeは、イベントテーブルを使用して、ハンドラーコードからログされたメッセージを格納します。イベントテーブルには、 Snowflakeによって事前定義された列 があります。

  2. 使用するハンドラー言語のログ API について理解を深めます。

    ハンドラー言語のリストについては、 サポートされている言語 を参照してから、 言語からログする方法に関するコンテンツ を表示します。

  3. ログコードをハンドラーに追加します。

  4. イベントテーブルから ログデータを取得 する方法を学習します。

ログメッセージのレベル

ログレベルを設定すると、イベントテーブルに格納されるログイベントデータのレベルを管理できます。ログする前に、この設定を使用して、ログメッセージの重大度を確実に取得してください。

詳細については、 ログレベルの設定 をご参照ください。

サポートされている言語

次の言語で記述された関数およびプロシージャハンドラーコードからのメッセージをログできます。これには、ハンドラーコードを Snowpark APIs で記述する場合も含みます。

言語/型

Java

JavaScript

Python

Scala

SQL

ストアドプロシージャ

✔ **

Scalar UDFs

UDTFs

✔ *

凡例

*

Snowparkで記述されたScala UDTF ハンドラー。

**

Snowflakeスクリプトはストアドプロシージャの記述に使用されます。

注釈

外部関数のリクエストおよび応答トランスレーター のログはサポートされていません。

ハンドラーコード言語のサポート

メッセージをログするには、ハンドラーコード言語に共通の関数を使用できます。Snowflakeはメッセージをインターセプトし、作成したイベントテーブルに格納します。

たとえば、Java UDF では、 SLF4J API を使用してメッセージをログできます。後で、イベントテーブル内のログされたメッセージにアクセスできます。

エラーが発生したときにメッセージをログする予定がある場合は、使用している言語でエラーを処理するための構造内からメッセージをログする必要があります。たとえば、Java UDF で、例外を処理する catch ブロックにおいてメッセージをログするメソッドを呼び出します。

次のテーブルに、ログでサポートされているハンドラー言語と、コードからのログに関するコンテンツへのリンクを示します。

言語

ログライブラリ

ドキュメント

Java

SLF4J API

Javaでのメッセージのログ

JavaScript

Snowflake JavaScript API snowflake オブジェクト

JavaScript でのメッセージのログ

Python

標準ライブラリ logging モジュール

Pythonでのメッセージのログ

Scala

SLF4J API

Scalaでのメッセージのログ

Snowflakeスクリプト

Snowflake SYSTEM$LOG 関数。

Snowflakeスクリプトでのメッセージのログ

ログメッセージへのアクセス

イベントテーブルで SELECT コマンドを実行すると、イベントテーブルに格納されているログメッセージにアクセスできます。詳細については、 ログされたメッセージデータへのアクセス をご参照ください。