<service_name>!SPCS_GET_LOGS

返回 Snowflake 从指定服务的容器收集的日志。有关更多信息,请参阅 访问容器日志

备注

仅在版本 9.20 或更高版本中创建的服务和作业支持该函数。

另请参阅:

监控服务

语法

<service_name>!SPCS_GET_LOGS(
  [ START_TIME => <constant_expr> ],
  [ END_TIME => <constant_expr> ] )
Copy

实参

START_TIME => constant_expr

检索日志的时间范围的开始时间(TIMESTAMP_LTZ 格式)。有关构造日期、时间和时间戳数据的可用函数,请参阅 日期和时间函数

如果未指定 START_TIME,则默认为 1 天前。

END_TIME => constant_expr

检索日志的时间范围的结束时间(TIMESTAMP_LTZ 格式)。

如果未指定 END_TIME,则默认为当前时间戳。

输出

输出中的每一行对应于事件表中的一个记录事件。您的服务输出到 stdoutstderr 的每一行在输出中占一行。

该函数返回以下列:

数据类型

描述

TIMESTAMP

TIMESTAMP_NTZ

Snowflake 从容器收集日志时的通用协调时间 (UTC) 时间戳。该值映射到事件表中的 TIMESTAMP 列。

INSTANCE_ID

NUMBER

作业服务实例的 ID。该值映射到事件表中 snow.service.instance 列中的 RESOURCE_ATTRIBUTES 字段。

CONTAINER_NAME

VARCHAR

容器的名称。该值映射到事件表中 RESOURCE_ATTRIBUTES 列中的 snow.service.container.name 字段。

LOG

VARCHAR

Snowflake 从您的应用程序容器收集的日志。该值映射到事件表中的 VALUE 列。

RECORD_ATTRIBUTES

OBJECT

有关日志的其他信息。例如,从中收集日志的日志流(stderr 或 stdout)。该值映射到事件表中的 RECORD_ATTRIBUTES 列。

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

OWNERSHIP

服务

要对架构中的任何对象执行操作,需要对父数据库和架构具有 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 您的容器日志可能需要几分钟才能显示在输出中。

示例

检索 Snowflake 在过去一天从 my_test_job 作业的容器收集的日志。

SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS());
Copy

输出示例:

+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+
| 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" |
|                         |             |                |                                                                                                                                                                     | }                          |
+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+

检索 Snowflake 在过去三天内从 my_test_job 作业的容器收集的日志。

SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS(START_TIME => DATEADD('day', -3, CURRENT_TIMESTAMP())));
Copy

检索名为 main 的容器中 my_test_job 作业实例 0 的日志。如以下示例所示,如果您省略 START_TIME 和 END_TIME 实参,该函数将检索过去一天的日志:

SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS())
WHERE instance_id = 0 AND container_name = 'main';
Copy
语言: 中文