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.")
Prise en main¶
Pour commencer à enregistrer des données à partir du code du gestionnaire, suivez ces étapes de haut niveau :
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.
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.
Ajoutez le code de journalisation à votre gestionnaire.
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 |
|
JavaScript |
Objet API JavaScript |
|
Python |
Module de la bibliothèque standard |
|
Scala |
SLF4J API |
|
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.