查看日志消息

您可以通过 Snowsight 或查询存储日志条目的事件表来查看日志消息。

备注

在开始使用日志消息之前,必须 启用遥测数据收集

在 Snowsight 中查看日志条目

备注

对日志记录和跟踪的 Snowsight 支持是适用于所有账户的预览版功能。

您可以使用 Snowsight 查看事件表中捕获的日志数据。

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 Monitoring » Traces and Logs

  3. Traces & Logs 页面中,您可以执行以下操作:

    • 要筛选显示的行,请使用页面顶部的下拉菜单。您可以根据以下特征进行筛选:

      • 记录条目的日期范围

      • Snowflake 用户的名称,执行发出该条目的代码

      • 日志条目严重性

      • 发出日志条目的代码的编程语言

    • 若要在显示的数据中按特定时间段筛选条目,请选择表示时间段的条形图。

    • 若要对行进行排序,请选择要对其进行排序的列名称。

    • 若要在其 Details 面板中查看条目的更多详细信息,请选择条目的行。

      在此面板上,您可以查看存储在事件表中的更多信息。下表描述了面板中的值:

      详细信息

      描述

      记录类型

      所选行表示的事件类型。检索自 RECORD_TYPE 列 值。

      数据库

      包含发出该条目的代码的数据库名称。检索自 RESOURCE_ATTRIBUTES 列 snow.database.name 值。

      架构

      包含发出该条目的代码的架构名称。检索自 RESOURCE_ATTRIBUTES 列 snow.schema.name 值。

      严重性

      日志条目的严重性。检索自 RECORD 列 severity_text 值。

      查询 ID

      发出日志条目的查询的 ID。检索自 snow.query.id 值。

      对象

      发出日志条目的来源名称,如函数或过程。检索自 RESOURCE_ATTRIBUTES 列 snow.executable.name 值。

      仓库

      运行生成事件的查询的仓库名称。检索自 RESOURCE_ATTRIBUTES 列 snow.warehouse.name 值。

      所有者

      会话中主要角色的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.session.role.primary.name 值。

      日志文本

      日志消息文本。检索自 VALUE 列 值。

查询事件表,以获得日志条目

若要访问已记录的消息,请在事件表上执行 SELECT 命令。

事件表具有一组预定义的列,用于捕获已记录消息的信息,包括以下内容:

  • 引入消息时的时间戳

  • 日志事件的范围,例如创建日志事件的类名称

  • 日志事件源,包括数据库、架构、用户、仓库

  • 日志的严重性级别

  • 日志消息

有关事件表结构的参考信息,请参阅 事件表列

以下各部分通过示例数据说明如何查询事件表以获取日志消息数据。

收集的数据

下面示例的输出显示了两个不同处理程序(一个用 Scala 编写,另一个用 Python 编写)获取日志消息后事件表中所选列的内容。

有关收集日志消息数据的事件表列的参考信息,请参阅 日志数据

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP           | SCOPE                             | RESOURCE_ATTRIBUTES   | RECORD_TYPE | RECORD                       | VALUE                                                      |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" }       | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from Python module.                                |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" }       | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from Python function start.                        |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" }       | **See excerpt below** | LOG         | { "severity_text": "ERROR" } | Logging an error from Python handler.                      |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:55 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from within the Scala constructor.                 |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from Scala method start.                           |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG         | { "severity_text": "ERROR" } | Logging an error from Scala handler: Something went wrong. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

RESOURCE_ATTRIBUTES 摘录

以下 JSON 包括您在前一个输出的 RESOURCE_ATTRIBUTES 列中找到的值的摘录。每个 snow.executable.name 名称值对都来自前一输出中的不同行。

此摘录后的 SELECT 查询代码选自 RESOURCE_ATTRIBUTES 列的值。

RESOURCE_ATTRIBUTES 列包含有关事件来源的数据。有关参考信息,请参阅 RESOURCE_ATTRIBUTES 列

{
  ...
  "snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
  ...
}

{
  ...
  "snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
  ...
}

{
  ...
  "snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
  ...
}

{
  ...
  "snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
  ...
}

{
  ...
  "snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
  ...
}

{
  ...
  "snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
  ...
}
Copy

使用 SELECT 语句执行查询

查询消息数据时,可以使用 括号表示法 选择列中的属性值,形式如下:

COLUMN_NAME['attribute_name']
Copy

以下示例中的代码会查询上表,目的是隔离与 Python 处理程序的日志消息相关的数据。查询选择日志条目严重性的 severity_text 属性。它选择日志消息的 VALUE 列内容。

包含处理程序的过程称为 do_logging。请注意,必须以全部大写字母指定过程名称,查询才能正常工作。

SET event_table_name='my_db.public.my_event_table';

SELECT
  TIMESTAMP as time,
  RESOURCE_ATTRIBUTES['snow.executable.name'] as executable,
  RECORD['severity_text'] as severity,
  VALUE as message
FROM
  IDENTIFIER($event_table_name)
WHERE
  SCOPE['name'] = 'python_logger'
  AND RESOURCE_ATTRIBUTES['snow.executable.name'] LIKE '%DO_LOGGING%'
  AND RECORD_TYPE = 'LOG';
Copy

查询结果

以下示例中的输出说明了查询的结果:

----------------------------------------------------------------------------------------------------------------
| TIME                | EXECUTABLE                       | SEVERITY   | MESSAGE                                |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO"     | "Logging from Python module."          |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO"     | "Logging from Python function start."  |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "ERROR"    | "Logging an error from Python handler" |
----------------------------------------------------------------------------------------------------------------
语言: 中文