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 :

Langage / Type

Java

JavaScript

Python

Scala

SQL

Procédures stockées

✔ **

UDFs scalaires

UDTFs

✔ *

Légende

*

Cela comprend des APIs Snowpark utilisées pour créer des UDTFs.

**

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

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.

Coûts de la journalisation

Lorsque vous enregistrez des messages à partir d’une fonction ou d’une procédure, Snowflake collecte les messages par lots et les intègre dans la table d’événements.

Pour effectuer ce travail, Snowflake utilise des ressources gérées par Snowflake, également appelées modèle de calcul sans serveur. Comme c’est le cas avec d’autres fonctionnalités sans serveur, Snowflake facture votre compte pour l’utilisation des ressources de calcul et des services Cloud nécessaires à l’ingestion des messages enregistrés. Les crédits Snowflake sont facturés par heure de calcul :

  • Ressources de calcul gérées par Snowflake : 1,25

  • Services Cloud : 1

Ces coûts apparaissent sur votre facture sous forme de postes distincts.

Pour déterminer l’utilisation du crédit pour l’enregistrement dans le temps, utilisez Vue EVENT_USAGE_HISTORY.

Pour réduire le coût de journalisation :

  • Évitez de vous connecter fréquemment sur une longue période.

  • Définir le niveau des messages ingérés sur des objets spécifiques. Par exemple, vous pouvez définir le niveau de journalisation pour des fonctions ou des procédures spécifiques dans une session, plutôt que de définir le niveau de journalisation pour toutes les fonctions ou procédures.