Protokollierung von Meldungen in Snowflake Scripting¶
Sie können Nachrichten von einem in Snowflake Scripting geschriebenen Handler für gespeicherte Prozeduren protokollieren, indem Sie die Snowflake-Funktion SYSTEM$LOG, SYSTEM$LOG_<level> (für Snowflake Scripting) verwenden. Wenn Sie eine Ereignistabelle zum Speichern von Protokolleinträgen eingerichtet haben, speichert Snowflake die von Ihrem Handler-Code generierten Protokolleinträge in dieser Tabelle.
Stellen Sie vor dem Starten der Protokollierung sicher, dass der Protokolliergrad so eingestellt ist, dass die gewünschten Meldungen in der Ereignistabelle gespeichert werden. Weitere Informationen dazu finden Sie unter Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.
Bemerkung
Bevor Sie mit der Protokollierung von Meldungen beginnen können, müssen Sie eine Ereignistabelle einrichten. Weitere Informationen dazu finden Sie unter Überblick über die Ereignisse.
Sie können auf die Protokollmeldungen zugreifen, indem Sie einen SELECT-Befehl auf der Ereignistabelle ausführen. Weitere Informationen dazu finden Sie unter Anzeigen von Protokollmeldungen.
Allgemeine Informationen zur Einstellung der Protokollierung und zum Abrufen von Meldungen in Snowflake finden Sie unter Protokollierung von Meldungen aus Funktionen und Prozeduren.
Snowflake Scripting-Beispiel¶
Der Code im folgenden Beispiel verwendet die SYSTEM$LOG-Funktion, um Meldungen auf jeder der unterstützten Ebenen zu protokollieren. Beachten Sie, dass eine Meldung, die von Code protokolliert wird, der eine Eingabezeile verarbeitet, für jede Zeile protokolliert wird, die von dem Handler verarbeitet wird. Wenn der Handler auf einer großen Tabelle ausgeführt wird, kann dies zu einer großen Anzahl von Meldungen in der Ereignistabelle führen.
Automatisches Hinzufügen von Protokollmeldungen über Blöcke und untergeordnete Jobs¶
Sie können die folgenden zusätzlichen Informationen über die Ausführung einer gespeicherten Snowflake Scripting-Prozedur automatisch protokollieren:
BEGIN/END eines Snowflake Scripting-Blocks.
BEGIN/END einer untergeordneten Jobanfrage.
Die automatische Protokollierung ist für die folgenden Anwendungsfälle gedacht:
Sie möchten die zusätzlichen Protokollmeldungen erzeugen, ohne den Body der gespeicherten Prozedur zu ändern.
Sie möchten umfassende Informationen über die Ausführung der gespeicherten Prozedur.
Sie möchten mehr Einblick in die Ausführung von gespeicherten Prozeduren haben, um die Entwicklung und das Debugging zu erleichtern, ohne manuell Protokollierungscode in die Prozedur einzufügen.
Um diese Snowflake Scripting-Meldungen für eine gespeicherte Prozedur automatisch zu protokollieren, legen Sie den Parameter AUTO_EVENT_LOGGING für die gespeicherte Prozedur mit dem Befehl ALTER PROCEDURE auf LOGGING oder ALL fest. Wenn Sie diesen Parameter auf ALL festlegen, werden automatisch auch zusätzliche Ablaufverfolgungsereignisse für die gespeicherte Prozedur ausgegeben.
Wichtig
Die zusätzlichen Informationen werden nur zur Ereignistabelle hinzugefügt, wenn die effektive LOG_LEVEL auf TRACE eingestellt ist. Weitere Informationen dazu finden Sie unter Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.
Erstellen Sie zum Beispiel eine einfache Tabelle und fügen Sie Daten ein:
Als Nächstes erstellen Sie eine gespeicherte Prozedur namens auto_event_logging_sp. Dieses Beispiel für eine gespeicherte Prozedur aktualisiert eine Tabellenzeile und fragt dann die Tabelle ab:
Die folgenden Beispiele legen den Parameter AUTO_EVENT_LOGGING für die gespeicherte Prozedur fest:
Rufen Sie die gespeicherte Prozedur auf:
Fragen Sie die Ereignistabelle nach Meldungen ab, die von der gespeicherten Prozedur namens auto_event_logging_sp protokolliert wurden. Drucken Sie für jede Nachricht den Zeitstempel, den Protokolliergrad und den Text der Nachricht aus.