Anzeigen von Protokollmeldungen¶
Sie können die Meldungen des Protokolls entweder über Snowsight oder durch Abfrage der Ereignistabelle, in der die Protokolleinträge gespeichert sind, einsehen.
Bemerkung
Bevor Sie mit der Verwendung von Protokollmeldungen beginnen können, müssen Sie die Telemetriedatenerfassung aktivieren.
Protokolleinträge in Snowsight anzeigen¶
Bemerkung
Snowsight die Unterstützung für die Protokollierung und Ablaufverfolgung ist ein Feature, das in der Vorschau für alle Konten verfügbar ist.
Sie können Snowsight verwenden, um die in der Ereignistabelle erfassten Protokolldaten anzuzeigen.
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Monitoring » Traces and Logs aus.
Auf der Seite Traces & Logs können Sie die folgenden Aktionen durchführen:
Um die angezeigten Zeilen zu filtern, verwenden Sie die Dropdown-Menüs oben auf der Seite. Sie können nach den folgenden Merkmalen filtern:
Datumsbereich, in dem der Eintrag erfasst wurde
Name des Snowflake-Benutzers, der den Code ausführt, der den Eintrag erzeugt hat
Schweregrad des Protokolleintrags
Programmiersprache des Codes, der den Protokolleintrag erzeugt hat
Um Einträge nach einem bestimmten Zeitraum in den angezeigten Daten zu filtern, wählen Sie den Diagrammbalken, der den Zeitraum darstellt.
Um Zeilen zu sortieren, wählen Sie den Namen der Spalte, nach der Sie sortieren möchten.
Um detailliertere Informationen über einen Eintrag im Details anzuzeigen, wählen Sie die Zeile des Eintrags aus.
In diesem Bereich können Sie weitere Informationen einsehen, die in der Ereignistabelle gespeichert sind. Die folgende Tabelle beschreibt die Werte im Panel:
Detail
Beschreibung
Datensatztyp
Art des Ereignisses, für das die ausgewählte Zeile steht. Abgerufen vom Spalte RECORD_TYPE-Wert.
Datenbank
Name der Datenbank, die den Code enthält, der den Eintrag erzeugt hat. Abgerufen vom Spalte RESOURCE_ATTRIBUTES
snow.database.name
-Wert.Schema
Name des Schemas, das den Code enthält, der den Eintrag erzeugt hat. Abgerufen vom Spalte RESOURCE_ATTRIBUTES
snow.schema.name
-Wert.Schweregrad
Schweregrad des Protokolleintrags. Abgerufen vom Spalte RECORD
severity_text
-Wert.Abfrage-ID
ID der Abfrage, innerhalb derer der Protokolleintrag erstellt wurde. Abgerufen vom Spalte RESOURCE_ATTRIBUTES
snow.query.id
-Wert.Objekt
Name der Quelle des emittierten Protokolleintrags, z. B. die Funktion oder Prozedur. Abgerufen vom Spalte RESOURCE_ATTRIBUTES
snow.executable.name
-Wert.Warehouse
Name des Warehouse, das die Abfrage ausführt, die das Ereignis erzeugt hat. Abgerufen vom Spalte RESOURCE_ATTRIBUTES
snow.warehouse.name
-Wert.Eigentümer
Name der Hauptrolle in der Sitzung. Abgerufen vom Spalte RESOURCE_ATTRIBUTES
snow.session.role.primary.name
-Wert.Protokolltext
Text der Protokollmeldung. Abgerufen vom Spalte VALUE-Wert.
Abfrage der Ereignistabelle nach Protokolleinträgen¶
Um auf die protokollierten Meldungen zuzugreifen, führen Sie den Befehl SELECT in der Ereignistabelle aus.
Eine Ereignistabelle hat einen Satz von vordefinierten Spalten, die Informationen über die protokollierten Meldungen erfassen, einschließlich die Folgenden:
Der Zeitstempel für den Zeitpunkt, an dem die Meldung erfasst wurde
Der Geltungsbereich des Protokollereignisses, z. B. der Name der Klasse, in der das Protokollereignis erstellt wurde.
Die Quelle der Ereignisse im Protokoll, einschließlich Datenbank, Schema, Benutzer, Warehouse
Der Schweregrad des Protokolleintrags
Die Protokollmeldung
Referenzinformationen über die Struktur der Ereignistabelle finden Sie unter Spalten von Ereignistabellen.
In den folgenden Abschnitten wird anhand von Beispieldaten gezeigt, wie Sie die Ereignistabelle nach Protokollmeldungsdaten abfragen können.
Gesammelte Daten¶
Die Ausgabe im folgenden Beispiel zeigt den Inhalt einer ausgewählten Teilmenge von Spalten einer Ereignistabelle, nachdem Protokollmeldungen für zwei separate Handler erfasst wurden, von denen einer in Scala und der andere in Python geschrieben wurde.
Referenzinformationen zu Ereignistabellenspalten, die Protokollmeldungsdaten sammeln, finden Sie unterr Daten zu Protokollereignissen.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RESOURCE_ATTRIBUTES-Auszüge¶
Die folgende JSON enthält Auszüge von Werten, die Sie in der RESOURCE_ATTRIBUTES-Spalte der vorangegangenen Ausgabe finden. Jedes snow.executable.name
-Name-Wert-Paar stammt aus einer anderen Zeile der vorangegangenen Ausgabe.
Der Code der SELECT-Abfrage, die diesem Auszug folgt, wählt aus dem RESOURCE_ATTRIBUTES-Wert der Spalte aus.
Die Spalte RESOURCE_ATTRIBUTES enthält Daten zur Quelle des Ereignisses. Weitere Informationen dazu finden Sie unter Spalte 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)"
...
}
Abfragen mit SELECT-Anweisung¶
Bei der Abfrage von Meldungsdaten wählen Sie Attributwerte innerhalb einer Spalte aus, indem Sie die Klammernotation, im folgenden Format verwenden:
COLUMN_NAME['attribute_name']
Der Code im folgenden Beispiel fragt die vorherige Tabelle ab, um Daten zu isolieren, die sich auf die Protokollmeldungen des Python-Handlers beziehen. Die Abfrage wählt das Attribut severity_text
aus, das den Schweregrad des Protokolleintrags enthält. Sie wählt den Inhalt der Spalte VALUE
der Protokollmeldung aus.
Die Prozedur, die den Handler enthält, heißt do_logging
. Beachten Sie, dass Sie den Namen der Prozedur in Großbuchstaben angeben müssen, damit die Abfrage funktioniert.
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';
Abfrageergebnisse¶
Die Ausgabe im folgenden Beispiel veranschaulicht das Ergebnis der Abfrage:
----------------------------------------------------------------------------------------------------------------
| 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" |
----------------------------------------------------------------------------------------------------------------