メッセージデータをログエントリ、トレースイベント、またはその両方としてキャプチャすることができます。キャプチャされたデータは、ログエントリとトレースイベントエントリの間で異なります。
ログエントリでキャプチャされたデータ
デフォルトでは、Snowflakeはプロシージャおよび UDF ハンドラーで未処理の例外について、イベントテーブルに以下を記録します。
例
次の例のコードは、 UDF ハンドラーからの未処理の例外に対して記録されたログデータをイベントテーブルにクエリします。
ログデータのイベントテーブルへのクエリの詳細については、 ログメッセージの表示 をご参照ください。
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['severity_text'] AS severity,
RECORD_ATTRIBUTES['exception.message'] AS error_message,
RECORD_ATTRIBUTES['exception.type'] AS exception_type,
RECORD_ATTRIBUTES['exception.stacktrace'] AS stacktrace
FROM
my_event_table
WHERE
RECORD_TYPE = 'LOG';
クエリーからの可能な出力は次のようになります。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SEVERITY | ERROR_MESSAGE | EXCEPTION_TYPE | STACKTRACE |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| "FATAL" | "could not convert string to float: '$1,000,000.00'" | "ValueError" | "Traceback (most recent call last):\n File \"_udf_code.py\", line 6, in compute\nValueError: could not convert string to float: '$1,000,000.00'\n" |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
トレースイベントエントリでキャプチャされたデータ
デフォルトでは、Snowflakeはプロシージャおよび UDF ハンドラーで未処理の例外について、イベントテーブルに以下を記録します。
例
次の例のコードは、 UDF ハンドラーからの未処理の例外に対して記録されたトレースイベントをイベントテーブルにクエリします。
トレースイベントデータのイベントテーブルへのクエリの詳細については、 トレースデータの表示 をご参照ください。
スパンの例
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['status']['code'] AS span_status
FROM
my_event_table
WHERE
record_type = 'SPAN';
クエリーからの可能な出力は次のようになります。
-----------------------
| SPAN_STATUS |
-----------------------
| "STATUS_CODE_ERROR" |
-----------------------
スパンイベントの例
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['name'] AS event_name,
RECORD_ATTRIBUTES['exception.message'] AS error_message,
RECORD_ATTRIBUTES['exception.type'] AS exception_type,
RECORD_ATTRIBUTES['exception.stacktrace'] AS stacktrace
FROM
my_event_table
WHERE
RECORD_TYPE = 'SPAN_EVENT';
クエリーからの可能な出力は次のようになります。
-----------------------------------------------------------------------------------------------------------------------------------------
| EVENT_NAME | ERROR_MESSAGE | EXCEPTION_TYPE | STACKTRACE |
-----------------------------------------------------------------------------------------------------------------------------------------
| "exception" | "could not convert string to float: '$1,000,000.00'" | "ValueError" | " File \"_udf_code.py\", line 6, in compute\n" |
-----------------------------------------------------------------------------------------------------------------------------------------