<service_name>!SPCS_GET_LOGS¶
指定されたサービスのコンテナからSnowflakeが収集したログを返します。詳細については、 コンテナログへのアクセス をご参照ください。
注釈
この関数は、リリース9.20以降で作成されたサービスとジョブでのみサポートされます。
- こちらもご参照ください。
構文¶
<service_name>!SPCS_GET_LOGS(
[ START_TIME => <constant_expr> ],
[ END_TIME => <constant_expr> ] )
引数¶
START_TIME => constant_expr
ログを取得する時間範囲の開始時刻(TIMESTAMP_LTZ 形式)。データ、時刻、タイムスタンプデータを構築するために利用できる関数については、日付と時刻の関数 をご覧ください。
START_TIME
が指定されていない場合、デフォルトで1日前に設定されます。END_TIME => constant_expr
ログを取得する時間範囲の終了時刻(TIMESTAMP_LTZ 形式)。
END_TIME が指定されていない場合、デフォルトで現在のタイムスタンプになります。
出力¶
出力の各行は、イベントテーブルのログイベント1つに対応します。サービスが stdout
または stderr
に出力する各行は、出力で1行になります。
この関数は、次の列を返します。
列 |
データ型 |
説明 |
---|---|---|
|
TIMESTAMP_NTZ |
Snowflakeがコンテナからログを収集した時点の協定世界時(UTC)によるタイムスタンプ。この値はイベントテーブルの TIMESTAMP 列にマッピングされます。 |
|
NUMBER |
ジョブサービスインスタンスの ID。この値はイベントテーブルの RESOURCE_ATTRIBUTES 列の |
|
VARCHAR |
コンテナの名前。この値はイベントテーブルの |
|
VARCHAR |
Snowflakeがアプリケーションコンテナから収集したログ。この値はイベントテーブルの VALUE 列にマッピングされます。 |
|
OBJECT |
ログに関する追加情報。たとえば、ログが収集された場所からのログストリーム(stderrまたはstdout)。この値はイベントテーブルの RECORD_ATTRIBUTES 列にマッピングされます。 |
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
OWNERSHIP |
サービス |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
コンテナログが出力に表示されるまでに数分かかる場合があります。
例¶
過去1日間の my_test_job
ジョブのコンテナからSnowflakeが収集したログを取得する。
SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS());
出力例:
+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+
| TIMESTAMP | INSTANCE_ID | CONTAINER_NAME | LOG | RECORD_ATTRIBUTES |
|-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------|
| 2025-06-26 00:23:40.281 | 0 | main | job-tutorial - INFO - Job finished | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
| 2025-06-26 00:23:38.787 | 0 | main | job-tutorial - INFO - Executing query [select current_time() as time,'hello'] and writing result to table [results] | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
| 2025-06-26 00:23:38.787 | 0 | main | job-tutorial - INFO - Connection succeeded. Current session context: database="TUTORIAL_DB", schema="DATA_SCHEMA", warehouse="TUTORIAL_WAREHOUSE", role="TEST_ROLE" | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
| 2025-06-26 00:23:36.852 | 0 | main | job-tutorial - INFO - Job started | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+
過去3日間の my_test_job
ジョブのコンテナからSnowflakeが収集したログを取得する。
SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS(START_TIME => DATEADD('day', -3, CURRENT_TIMESTAMP())));
main
というコンテナの my_test_job
ジョブインスタンス 0
のログを取得する。次の例に示すように、START_TIME 引数と END_TIME 引数を省略した場合、この関数は過去1日間のログを取得します。
SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS())
WHERE instance_id = 0 AND container_name = 'main';