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

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. イベントテーブルから ログデータを取得 する方法を学習します。

ログメッセージのレベル

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

詳細については、 Setting Log Level をご参照ください。

サポートされている言語

You can log messages from function and procedure handler code written in the following languages, including when the handler code is written with Snowpark APIs.

言語/型

Java

JavaScript

Python

Scala

SQL

Stored Procedures

✔ **

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