関数とプロシージャからのメッセージのログ¶
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.")
はじめるにあたり¶
ハンドラーコードからログを開始するには、次の高レベルのステップに従います。
-
Snowflakeは、イベントテーブルを使用して、ハンドラーコードからログされたメッセージを格納します。イベントテーブルには、 Snowflakeによって事前定義された列 があります。
使用するハンドラー言語のログ API について理解を深めます。
ハンドラー言語のリストについては、 サポートされている言語 を参照してから、 言語からログする方法に関するコンテンツ を表示します。
ログコードをハンドラーに追加します。
イベントテーブルから ログデータを取得 する方法を学習します。
ログメッセージのレベル¶
ログレベルを設定すると、イベントテーブルに格納されるログイベントデータのレベルを管理できます。ログする前に、この設定を使用して、ログメッセージの重大度を確実に取得してください。
詳細については、 ログレベルの設定 をご参照ください。
サポートされている言語¶
次の言語で記述された関数およびプロシージャハンドラーコードからのメッセージをログできます。これには、ハンドラーコードを 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 |
|
JavaScript |
Snowflake JavaScript API |
|
Python |
標準ライブラリ |
|
Scala |
SLF4J API |
|
Snowflakeスクリプト |
Snowflake SYSTEM$LOG 関数。 |
ログメッセージへのアクセス¶
イベントテーブルで SELECT コマンドを実行すると、イベントテーブルに格納されているログメッセージにアクセスできます。詳細については、 ログされたメッセージデータへのアクセス をご参照ください。