<service_name>!SPCS_GET_LOGS¶
指定されたサービスのコンテナからSnowflakeが収集したログを返します。詳細については、 コンテナログの公開とアクセス をご参照ください。
- こちらもご参照ください。
構文¶
<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 列にマッピングされます。 |
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
|---|---|---|
MONITOR |
サービス |
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
コンテナログが出力に表示されるまでに数分かかる場合があります。
例¶
過去1日間の my_test_job ジョブのコンテナからSnowflakeが収集したログを取得する。
SELECT * FROM TABLE(mydb.myschema.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(mydb.myschema.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(mydb.myschema.my_test_job!SPCS_GET_LOGS())
WHERE instance_id = 0 AND container_name = 'main';