Visualização de mensagens de log

É possível exibir as mensagens de log por meio do Snowsight ou consultando a tabela de evento na qual as entradas de log são armazenadas.

Nota

Antes de começar a usar mensagens de log, é necessário habilitar a coleta de dados de telemetria.

Exibição das entradas de log no Snowsight

Nota

O suporte do Snowsight para registro em log e rastreamento é um recurso em versão preliminar para todas as contas.

É possível usar Snowsight para exibir dados de log capturados na tabela de evento.

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Monitoring » Traces and Logs.

  3. Na página Traces & Logs, é possível realizar as seguintes ações:

    • Para filtrar as linhas exibidas, use os menus suspensos na parte superior da página. É possível filtrar pelas seguintes características:

      • Intervalo de datas durante o qual a entrada foi registrada

      • Nome de usuário Snowflake executando o código que emitiu a entrada

      • Gravidade da entrada de log

      • Linguagem de programação do código que emitiu a entrada de log

    • Para filtrar entradas por um período de tempo específico nos dados exibidos, selecione a barra do gráfico que representa o período de tempo.

    • Para classificar linhas, selecione o nome da coluna pela qual você deseja classificar.

    • Para exibição informações mais detalhadas sobre uma entrada no painel Details, selecione a linha da entrada.

      Neste painel, você pode exibir mais informações armazenadas na tabela de evento. A tabela a seguir descreve os valores no painel:

      Detalhe

      Descrição

      Tipo de registro

      Tipo de evento que a linha selecionada representa. Recuperado do valor Coluna RECORD_TYPE.

      Banco de dados

      Nome do banco de dados com o código que emitiu a entrada. Recuperado do valor Coluna RESOURCE_ATTRIBUTES snow.database.name.

      Esquema

      Nome do esquema com o código que emitiu a entrada. Recuperado do valor Coluna RESOURCE_ATTRIBUTES snow.schema.name.

      Gravidade

      Gravidade da entrada de log. Recuperado do valor Coluna RECORD severity_text.

      ID de consulta

      ID da consulta na qual a entrada de log foi emitida. Recuperado do valor Coluna RESOURCE_ATTRIBUTES snow.query.id.

      Objeto

      Nome da origem da entrada de log emitida, como a função ou procedimento. Recuperado do valor Coluna RESOURCE_ATTRIBUTES snow.executable.name.

      Warehouse

      Nome do warehouse que executa a consulta que gerou o evento. Recuperado do valor Coluna RESOURCE_ATTRIBUTES snow.warehouse.name.

      Proprietário

      Nome da função primária na sessão. Recuperado do valor Coluna RESOURCE_ATTRIBUTES snow.session.role.primary.name.

      Texto do log

      Texto da mensagem de log. Recuperado do valor Coluna VALUE.

Consulta da tabela de evento para entradas de log

Para acessar as mensagens registradas, execute o comando SELECT na tabela de evento.

Uma tabela de evento tem um conjunto de colunas predefinidas que capturam informações sobre as mensagens registradas, incluindo o seguinte:

  • O carimbo de data/hora em que a mensagem foi ingerida

  • O escopo do evento de log, como o nome da classe em que o evento de log foi criado

  • A origem do evento de log, incluindo o banco de dados, esquema, usuário e warehouse

  • O nível de gravidade do log

  • A mensagem de log

Para obter informações de referência sobre a estrutura da tabela de evento, consulte Colunas da tabela de eventos.

As seções a seguir ilustram com dados de exemplo como é possível consultar a tabela de eventos para obter dados de mensagens de log.

Dados coletados

A saída no exemplo a seguir mostra o conteúdo de um subconjunto selecionado de colunas de uma tabela de eventos depois que as mensagens de registro foram capturadas para dois manipuladores separados, um escrito em Scala e outro em Python.

Para obter informações de referência sobre colunas da tabela de eventos que coletam dados de mensagem de log, consulte Dados para logs.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Trechos de RESOURCE_ATTRIBUTES

O seguinte JSON inclui trechos de valores que você encontraria na coluna RESOURCE_ATTRIBUTES de saída anterior. Cada par nome-valor snow.executable.name é de uma linha diferente na saída anterior.

O código de consulta SELECT após este trecho seleciona o valor da coluna RESOURCE_ATTRIBUTES.

A coluna RESOURCE_ATTRIBUTES contém dados sobre a origem do evento. Para informações de referência, veja Coluna 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

Consulta com instrução SELECT

Ao consultar dados de mensagem, para selecionar valores de atributo dentro de uma coluna, use a notação de colchetes, como no seguinte formato:

COLUMN_NAME['attribute_name']
Copy

O código no exemplo a seguir consulta a tabela anterior com a intenção de isolar dados relacionados às mensagens de log do manipulador Python. A consulta seleciona o atributo severity_text para a gravidade da entrada de log. Ele seleciona o conteúdo da coluna VALUE para a mensagem de log.

O procedimento que contém o manipulador é chamado do_logging. Observe que, para que a consulta funcione, é necessário especificar o nome do procedimento em letras maiúsculas.

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

Resultados de consultas

A saída no exemplo a seguir ilustra o resultado da consulta:

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