Enregistrement de messages à partir de fonctions et de procédures

Vous pouvez enregistrer des messages (tels que des messages d’avertissement ou d’erreur) à partir d’une procédure stockée, une UDF, ou une UDTF, y compris ceux que vous écrivez en utilisant des APIs Snowpark. Vous pouvez accéder aux messages enregistrés à partir d’une table d’événements (un type de table prédéfinie qui capture les événements, y compris les messages enregistrés). Pour une liste des langages de gestionnaire pris en charge, voir Langues acceptées.

Par exemple, dans une UDF Java, vous pouvez utiliser l” API SLF4J pour enregistrer les messages. Plus tard, vous pourrez accéder à ces messages enregistrés dans une table d’événements.

Note

Avant de commencer à enregistrer des messages, vous devez configurer une table d’événements. Pour plus d’informations, reportez-vous à Configuration d’une table d’événement.

Exemple d’enregistrement

Le code Python de l’exemple suivant importe le module logging, crée un enregistreur et enregistre un message au niveau INFO.

Note

Un message enregistré à partir d’une méthode qui traite une ligne d’entrée sera enregistré pour chaque ligne traitée par l’UDF. Si l’UDF est exécutée dans une grande table, il peut en résulter un grand nombre de messages dans la table des événements.

import logging

logger = logging.getLogger("mylog")

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

Prise en main

Pour commencer à enregistrer des données à partir du code du gestionnaire, suivez ces étapes de haut niveau :

  1. Mettre en place une table d’événements.

    Snowflake utilisera votre table d’événements pour stocker les messages enregistrés à partir de votre code de gestionnaire. Une table d’événements comporte des colonnes prédéfinies par Snowflake.

  2. Familiarisez-vous avec l’API de journalisation pour le langage du gestionnaire que vous allez utiliser.

    Reportez-vous à Langues acceptées pour obtenir la liste des langages de gestionnaire, puis consultez le contenu sur la façon de se connecter à partir de votre langage.

  3. Ajoutez le code de journalisation à votre gestionnaire.

  4. Apprenez à récupérer les données de journalisation de la table des événements.

Niveau des messages du journal

Vous pouvez gérer le niveau des données du journal stockées dans la table des événements en définissant le niveau du journal. Avant de procéder à la journalisation, utilisez ce paramètre pour vous assurer que vous capturez bien la gravité du message.

Pour plus d’informations, reportez-vous à Réglage du niveau de journalisation.

Langues acceptées

Vous pouvez enregistrer des messages provenant du code du gestionnaire de fonction et de procédure écrit dans les langages suivants, y compris lorsque le code du gestionnaire est écrit avec des APIs Snowpark.

Langage / Type

Java

JavaScript

Python

Scala

SQL

Procédures stockées

✔ **

UDFs scalaires

UDTFs

✔ *

Légende

*

Gestionnaire d’UDTF Scala écrit dans Snowpark.

**

L’Exécution de scripts Snowflake utilisée pour écrire des procédures stockées.

Note

La journalisation n’est pas prise en charge pour les traducteurs de requêtes et de réponses dans des fonctions externes

Prise en charge du langage du code du gestionnaire

Pour enregistrer les messages, vous pouvez utiliser des fonctions communes au langage de code de votre gestionnaire. Snowflake intercepte les messages et les stocke dans la table d’événements que vous avez créée.

Par exemple, dans une UDF Java, vous pouvez utiliser l” API SLF4J pour enregistrer les messages. Plus tard, vous pourrez accéder à ces messages enregistrés dans une table d’événements.

Si vous prévoyez d’enregistrer des messages en cas d’erreur, vous devez le faire à partir de la structure de gestion des erreurs du langage que vous utilisez. Par exemple, dans une UDF Java, appelez la méthode d’enregistrement d’un message dans le bloc catch où vous traitez l’exception.

Le tableau suivant répertorie les langages de gestionnaire pris en charge pour la journalisation, ainsi que des liens vers des informations sur la journalisation à partir du code.

Langage

Bibliothèque d’enregistrement

Documentation

Java

SLF4J API

Enregistrement des messages en Java

JavaScript

Objet API JavaScript snowflake Snowflake

Enregistrement des messages en JavaScript

Python

Module de la bibliothèque standard logging

Journalisation des messages en Python

Scala

SLF4J API

Journalisation des messages en Scala

Exécution de scripts Snowflake

Fonction SYSTEM$LOG Snowflake.

Enregistrement des messages dans l’Exécution de scripts Snowflake

Accès aux messages du journal

Vous pouvez accéder aux messages du journal stockés dans votre table d’événements en exécutant une commande SELECT sur la table d’événements. Pour plus d’informations, reportez-vous à Accès aux données des messages enregistrés.