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.")
Introdução¶
Para começar a registrar em log a partir do código do manipulador, siga estas etapas de alto nível:
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.
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.
Adicione o código de registro ao seu manipulador.
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.
Nota
O registro não é suportado para Tradutores de solicitações e respostas em funções externas
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 |
|
JavaScript |
Objeto API JavaScript Snowflake |
|
Python |
Módulo |
|
Scala |
SLF4J API |
|
Script Snowflake |
Função Snowflake SYSTEM$LOG. |
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.