Affichage des messages de journalisation¶
Vous pouvez afficher les messages du journal via Snowsight ou en interrogeant la table des événements dans laquelle les entrées du journal sont stockées.
Note
Avant de pouvoir commencer à utiliser les messages de journal, vous devez activer la collecte de données de télémétrie.
Afficher les entrées du journal dans Snowsight¶
Note
La prise en charge de Snowsight de la journalisation et du traçage est une fonctionnalité en avant-première disponible pour tous les comptes.
Vous pouvez utiliser Snowsight pour afficher les données de journal capturées dans la table des événements.
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Monitoring » Traces and Logs.
Dans la page Traces & Logs, vous pouvez effectuer les opérations suivantes :
Pour filtrer les lignes affichées, utilisez les menus déroulants en haut de la page. Vous pouvez appliquer un filtre avec les caractéristiques suivantes :
Plage de dates pendant laquelle l’entrée a été enregistrée
Nom de l’utilisateur Snowflake exécutant le code qui a émis l’entrée
Gravité de l’entrée de journal
Langage de programmation du code qui a émis l’entrée de journal
Pour filtrer les entrées par une période spécifique dans les données affichées, sélectionnez la barre graphique représentant la période.
Pour trier les lignes, sélectionnez le nom de la colonne par laquelle vous souhaitez effectuer le tri.
Pour afficher des informations plus détaillées sur une entrée dans son panneau Details, sélectionnez la ligne de l’entrée.
Sur ce panneau, vous pouvez afficher plus d’informations stockées dans la table des événements. Le tableau suivant décrit les valeurs du panneau :
Détail
Description
Type d’enregistrement
Type d’événement que représente la ligne sélectionnée. Récupéré de la valeur Colonne RECORD_TYPE.
Base de données
Nom de la base de données contenant le code qui a émis l’entrée. Récupéré de la valeur Colonne RESOURCE_ATTRIBUTES
snow.database.name
.Schéma
Nom du schéma contenant le code qui a émis l’entrée. Récupéré de la valeur Colonne RESOURCE_ATTRIBUTES
snow.schema.name
.Gravité
Gravité de l’entrée du journal. Récupéré de la valeur Colonne RECORD
severity_text
.ID de requête
ID de la requête dans laquelle l’entrée de journal a été émise. Récupéré de la valeur Colonne RESOURCE_ATTRIBUTES
snow.query.id
.Objet
Nom de la source de l’entrée de journal émise, telle que la fonction ou la procédure. Récupéré de la valeur Colonne RESOURCE_ATTRIBUTES
snow.executable.name
.Entrepôt
Nom de l’entrepôt qui exécute la requête générant l’événement. Récupéré de la valeur Colonne RESOURCE_ATTRIBUTES
snow.warehouse.name
.Propriétaire
Nom du rôle principal dans la session. Récupéré de la valeur Colonne RESOURCE_ATTRIBUTES
snow.session.role.primary.name
.Texte du journal
Texte du message du journal. Récupéré de la valeur Colonne VALUE.
Interroger la table d’événements pour les entrées de journal¶
Pour accéder aux messages enregistrés, exécutez la commande SELECT sur la table des événements.
Une table d’événements comporte un ensemble de colonnes prédéfinies qui contiennent des informations sur les messages enregistrés, notamment :
L’horodatage auquel le message a été ingéré
Le champ d’application de l’événement de journalisation, tel que le nom de la classe dans laquelle l’événement de journalisation a été créé
La source de l’événement du journal, y compris la base de données, le schéma, l’utilisateur, l’entrepôt
Le niveau de gravité du journal
Le message du journal
Pour obtenir des informations de référence sur la structure de la table des événements, voir Colonnes de table d’événements.
Les sections suivantes illustrent, à l’aide d’exemples, la manière dont vous pouvez interroger la table des événements pour obtenir des données sur les messages du journal.
Données collectées¶
L’exemple suivant montre le contenu d’un sous-ensemble sélectionné de colonnes d’une table d’événements après la capture de messages de journal pour deux gestionnaires distincts, l’un écrit en Scala et l’autre en Python.
Pour des informations de référence sur les colonnes de la table des événements qui collectent les données des messages du journal, reportez-vous à Données pour les journaux.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP | SCOPE | RESOURCE_ATTRIBUTES | RECORD_TYPE | RECORD | VALUE |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" } | **See excerpt below** | LOG | { "severity_text": "INFO" } | Logging from Python module. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" } | **See excerpt below** | LOG | { "severity_text": "INFO" } | Logging from Python function start. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" } | **See excerpt below** | LOG | { "severity_text": "ERROR" } | Logging an error from Python handler. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:55 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG | { "severity_text": "INFO" } | Logging from within the Scala constructor. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG | { "severity_text": "INFO" } | Logging from Scala method start. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG | { "severity_text": "ERROR" } | Logging an error from Scala handler: Something went wrong. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Extraits de RESOURCE_ATTRIBUTES¶
Le JSON suivant inclut des extraits de valeurs que vous trouverez dans les résultats précédents de la colonne RESOURCE_ATTRIBUTES. Chaque paire nom-valeur snow.executable.name
provient d’une ligne différente dans la sortie précédente.
Le code de requête SELECT suivant cet extrait sélectionne parmi la valeur de colonne RESOURCE_ATTRIBUTES.
La colonne RESOURCE_ATTRIBUTES contient des données sur la source de l’événement. Pour des informations de référence, voir Colonne RESOURCE_ATTRIBUTES.
{
...
"snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
...
}
{
...
"snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
...
}
{
...
"snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
...
}
{
...
"snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
...
}
{
...
"snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
...
}
{
...
"snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
...
}
Interroger avec l’instruction SELECT¶
Lorsque vous interrogez les données d’un message, pour sélectionner les valeurs d’un attribut dans une colonne, utilisez la notation par crochets, comme dans le format suivant :
COLUMN_NAME['attribute_name']
Le code de l’exemple ci-dessous interroge le tableau précédent dans le but d’isoler les données relatives aux messages de journal du gestionnaire Python. La requête sélectionne l’attribut severity_text
pour la gravité de l’entrée du journal. Il sélectionne le contenu de la colonne VALUE
pour le message d’enregistrement.
La procédure contenant le gestionnaire est appelée do_logging
. Notez que pour que la requête fonctionne, vous devez spécifier le nom de la procédure en majuscules.
SET event_table_name='my_db.public.my_event_table';
SELECT
TIMESTAMP as time,
RESOURCE_ATTRIBUTES['snow.executable.name'] as executable,
RECORD['severity_text'] as severity,
VALUE as message
FROM
IDENTIFIER($event_table_name)
WHERE
SCOPE['name'] = 'python_logger'
AND RESOURCE_ATTRIBUTES['snow.executable.name'] LIKE '%DO_LOGGING%'
AND RECORD_TYPE = 'LOG';
Résultats de la requête¶
La sortie de l’exemple suivant illustre le résultat de la requête :
----------------------------------------------------------------------------------------------------------------
| TIME | EXECUTABLE | SEVERITY | MESSAGE |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO" | "Logging from Python module." |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO" | "Logging from Python function start." |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "ERROR" | "Logging an error from Python handler" |
----------------------------------------------------------------------------------------------------------------