Registro de mensagens de funções e procedimentos

É possível registrar mensagens (como mensagens de aviso ou de erro) de um procedimento armazenado, UDF ou UDTF, inclusive aquelas que você escreve usando APIs Snowpark. Você pode acessar as mensagens registradas em uma tabela de eventos (um tipo de tabela predefinida que captura eventos, inclusive mensagens registradas). Para obter uma lista das linguagens de manipuladores compatíveis, consulte Linguagens suportadas.

Por exemplo, em uma UDF de Java, você pode usar a API SLF4J para registrar mensagens. Posteriormente, você poderá acessar essas mensagens registradas em uma tabela de eventos.

Nota

Antes de começar a registrar mensagens, é necessário configurar uma tabela de eventos. Para obter mais informações, consulte Configuração de uma tabela de eventos.

Exemplo de registro em log

O código Python no exemplo a seguir importa o módulo logging, obtém um agente de log e registra uma mensagem no nível INFO.

Nota

Uma mensagem registrada de um método que processa uma linha de entrada será registrada para cada linha processada pela UDF. Se a UDF for executada em uma tabela grande, isso poderá resultar em um grande número de mensagens na tabela de eventos.

import logging

logger = logging.getLogger("mylog")

def test_logging(self):
    logger.info("This is an INFO test.")
Copy

Introdução

Para começar a registrar em log a partir do código do manipulador, siga estas etapas de alto nível:

  1. Configure uma tabela de eventos.

    O Snowflake usará sua tabela de eventos para armazenar as mensagens registradas pelo código do manipulador. Uma tabela de eventos tem colunas predefinidas pelo Snowflake.

  2. Familiarize-se com o registro da API da linguagem do manipulador que você usará.

    Consulte Linguagens suportadas para obter uma lista de linguagens de manipuladores e, em seguida, veja o conteúdo sobre como fazer registros de log de sua linguagem.

  3. Adicione o código de registro ao seu manipulador.

  4. Saiba como recuperar dados de registro da tabela de eventos.

Nível das mensagens de registro

É possível gerenciar o nível dos dados de eventos de registro armazenados na tabela de eventos definindo o nível de registro. Antes de registrar em log, use essa configuração para ter certeza de que está capturando a gravidade da mensagem de registro.

Para obter mais informações, consulte Configuração do nível de registro.

Linguagens suportadas

É possível registrar mensagens do código do manipulador da função e procedimento escrito nas seguintes linguagens, inclusive quando o código do manipulador é escrito com Snowpark APIs.

Linguagem / Tipo

Java

JavaScript

Python

Scala

SQL

Procedimentos armazenados

✔ **

UDFs escalares

UDTFs

✔ *

Legenda

*

Manipulador de UDTF Scala escrito em Snowpark.

**

Script Snowflake usado para escrever procedimentos armazenados.

Suporte à linguagem de código do manipulador

Para registrar mensagens, é possível usar funções comuns à linguagem de código do manipulador. O Snowflake intercepta as mensagens e as armazena na tabela de eventos que você criou.

Por exemplo, em uma UDF de Java, você pode usar a API SLF4J para registrar mensagens. Posteriormente, você poderá acessar essas mensagens registradas em uma tabela de eventos.

Se você planeja registrar mensagens quando ocorrerem erros, deverá registrá-las a partir do constructo para tratamento de erros na linguagem que estiver usando. Por exemplo, em uma UDF de Java, chame o método para registrar uma mensagem no bloco catch em que você trata a exceção.

A tabela a seguir lista as linguagens de manipulador compatíveis com o registro em log, juntamente com links para o conteúdo sobre o registro em log a partir do código.

Linguagem

Biblioteca de registro em log

Documentação

Java

SLF4J API

Registro de mensagens em Java

JavaScript

Objeto API JavaScript Snowflake snowflake

Registro de mensagens em JavaScript

Python

Módulo logging da biblioteca padrão

Registro de mensagens em Python

Scala

SLF4J API

Registro de mensagens em Scala

Script Snowflake

Função Snowflake SYSTEM$LOG.

Registro de mensagens no Script Snowflake

Acesso a mensagens de registro

Você pode acessar as mensagens de registro armazenadas na tabela de eventos executando um comando SELECT na tabela de eventos. Para obter mais informações, consulte Acesso a dados de mensagens registradas.