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 de funções e procedimentos escrito nas seguintes linguagens:
Linguagem / Tipo |
Java |
JavaScript |
Python |
Scala |
SQL |
---|---|---|---|---|---|
Procedimentos armazenados |
✔ |
✔ |
✔ |
✔ |
✔ ** |
UDFs escalares |
✔ |
✔ |
✔ |
✔ |
|
UDTFs |
✔ |
✔ |
✔ |
✔ * |
Legenda
- *
Isso inclui APIs Snowpark usadas para criar UDTFs.
- **
Script Snowflake usado para escrever procedimentos armazenados.
Nota
O registro em log não é suportado para o seguinte:
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.
Custos da registro em log¶
Quando você registra mensagens de uma função ou procedimento, o Snowflake coleta as mensagens em lotes e as ingere na tabela de eventos.
Para realizar esse trabalho, o Snowflake usa os recursos gerenciados pelo Snowflake, também chamados de modelo de computação sem servidor. Como no caso de outros recursos sem servidor, o Snowflake cobra da sua conta o uso do recurso de computação e dos serviços de nuvem necessários para ingerir as mensagens registradas. Créditos do Snowflake cobrados por hora de computação:
Recursos de computação gerenciados pelo Snowflake: 1,25
Serviços de nuvem: 1
Esses custos aparecem em sua fatura como itens de linha separados.
Para determinar o uso de crédito para registro em log ao longo do tempo, use o Exibição EVENT_USAGE_HISTORY.
Para reduzir o custo do registro em log:
Evite fazer registros de log frequentes durante um longo período de tempo.
Defina o nível de mensagens ingeridas em objetos específicos. Por exemplo, defina o nível de registro para funções ou procedimentos específicos em uma sessão, em vez de definir o nível de registro para todas as funções ou procedimentos.