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 de linguagens de manipulador compatíveis, consulte Linguagens compatíveis.
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 coletar mensagens de log, é possível habilitar a coleta de dados de telemetria. Quando você instrumenta seu código, o Snowflake gera os dados e os coleta em uma tabela de evento.
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á.
veja Linguagens compatíveis para uma lista de idiomas de manipulador e consulte o conteúdo sobre como realizar o registro em log a partir 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 log¶
É 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 Definição de níveis para registro, métricas e rastreamento.
Linguagens compatíveis¶
É possível registrar mensagens do código escrito nas seguintes linguagens, inclusive quando o código do manipulador é escrito com APIs Snowpark.
Linguagem / Tipo |
Java |
JavaScript |
Python |
Scala |
SQL |
---|---|---|---|---|---|
Manipulador de procedimento armazenado |
✔ |
✔ |
✔ |
✔ |
✔ ** |
Aplicativo Streamlit |
✔ |
||||
Manipulador de UDF (função escalar) |
✔ |
✔ |
✔ |
✔ |
|
Manipulador de UDTF (função de tabela) |
✔ |
✔ |
✔ |
✔ * |
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
Registro a partir do 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. |
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. Para obter mais informações, consulte Visualização de mensagens de log.