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.

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez Monitoring » Traces and Logs.

  3. 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)"
  ...
}
Copy

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']
Copy

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';
Copy

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" |
----------------------------------------------------------------------------------------------------------------