Protokollierung von Meldungen aus Funktionen und Prozeduren¶
Sie können Protokollmeldungen (z. B. Warn- oder Fehlermeldungen) von einer gespeicherten Prozedur, UDF oder UDTF protokollieren, auch solche, die Sie unter Verwendung von Snowpark-APIs schreiben. Sie können auf die protokollierten Meldungen über eine Ereignistabelle (eine spezielle vordefinierte Tabellen, in der die Ereignisse, einschließlich protokollierter Meldungen, erfasst werden) zugreifen. Eine Liste der unterstützten Handler-Sprachen finden Sie unter Unterstützte Sprachen.
In einer Java UDF können Sie zum Beispiel SLF4J API verwenden, um Meldungen zu protokollieren. Später können Sie auf diese protokollierten Meldungen über eine Ereignistabelle zugreifen.
Bemerkung
Bevor Sie mit der Protokollierung von Meldungen beginnen können, müssen Sie eine Ereignistabelle einrichten. Weitere Informationen dazu finden Sie unter Einrichten einer Ereignistabelle.
Beispiel für die Protokollierung¶
Der Python-Code im folgenden Beispiel importiert das Modul logging
, ruft einen Logger ab und protokolliert eine Meldung des Protokolliergrads INFO
.
Bemerkung
Eine Meldung, die von einer Methode protokolliert wird, die eine Eingabezeile verarbeitet, wird für jede Zeile protokolliert, die von der UDF verarbeitet wird. Wenn die UDF auf einer großen Tabelle ausgeführt wird, kann dies zu einer großen Anzahl von Meldungen in der Ereignistabelle führen.
import logging
logger = logging.getLogger("mylog")
def test_logging(self):
logger.info("This is an INFO test.")
Erste Schritte¶
Um mit der Protokollierung von Handler-Code zu beginnen, führen Sie die folgenden allgemeinen Schritte aus:
-
Snowflake verwendet Ihre Ereignistabelle, um die von Ihrem Handler-Code protokollierten Meldungen zu speichern. Eine Ereignistabelle hat Spalten, die von Snowflake vorgegeben werden.
Machen Sie sich mit der Protokollierungs-API für die von Ihnen verwendete Handler-Sprache vertraut.
Eine Liste der Handler-Sprachen finden Sie unter Unterstützte Sprachen. Informieren Sie sich, wie die Protokollierung in Ihrer Sprache vorgenommen wird.
Protokollierungscode zum Handler hinzufügen.
Erfahren Sie, wie Sie über die Ereignistabelle Protokolldaten abrufen.
Protokolliergrad von Protokollmeldungen¶
Sie können den Umfang der in der Ereignistabelle gespeicherten Protokollereignisdaten verwalten, indem Sie den Protokolliergrad festlegen. Verwenden Sie diese Einstellung, um vor der Protokollierung sicherzustellen, dass Sie den Schweregrad der Protokollmeldung erfassen.
Weitere Informationen dazu finden Sie unter Einstellen des Protokolliergrads.
Unterstützte Sprachen¶
Sie können Meldungen aus Handler-Code von Funktionen und Prozeduren protokollieren, der in den folgenden Sprachen geschrieben wurde, auch wenn der Handler-Code with Snowpark-APIs geschrieben wurde.
Sprache/Typ |
Java |
JavaScript |
Python |
Scala |
SQL |
---|---|---|---|---|---|
Gespeicherte Prozeduren |
✔ |
✔ |
✔ |
✔ |
✔ ** |
Skalare UDFs |
✔ |
✔ |
✔ |
✔ |
|
UDTFs |
✔ |
✔ |
✔ |
✔ * |
Legende
- *:
Scala-UDTF-Handler geschrieben in Snowpark.
- **:
Snowflake Scripting wird zum Schreiben von gespeicherten Prozeduren verwendet.
Bemerkung
Protokollieren wird nicht unterstützt für Anforderungs- und Antwortübersetzer in externen Funktionen.
Unterstützung der Sprache des Handler-Codes¶
Zur Protokollierung von Meldungen können Sie Funktionen verwenden, die in der Sprache Ihres Handler-Codes üblich sind. Snowflake fängt Meldungen ab und speichert sie in der von Ihnen erstellten Ereignistabelle.
In einer Java UDF können Sie zum Beispiel SLF4J API verwenden, um Meldungen zu protokollieren. Später können Sie auf diese protokollierten Meldungen über eine Ereignistabelle zugreifen.
Wenn Sie vorhaben, Fehlermeldungen zu protokollieren, sollten Sie diese innerhalb des Konstrukts zur Fehlerbehandlung in der von Ihnen verwendeten Sprache protokollieren. Rufen Sie z. B. in einer Java-UDF die Methode zur Protokollierung einer Meldung im Block catch
auf, in dem Sie die Ausnahme behandeln.
In der folgenden Tabelle sind die für die Protokollierung unterstützten Handler-Sprachen aufgeführt, zusammen mit Links zu weiteren Informationen zur Protokollierung von Code.
Sprache |
Protokollierungsbibliothek |
Dokumentation |
---|---|---|
Java |
SLF4J API |
|
JavaScript |
Snowflake JavaScript-API |
|
Python |
|
|
Scala |
SLF4J API |
|
Snowflake Scripting |
Snowflake SYSTEM$LOG-Funktion. |
Zugriff auf Protokollmeldung¶
Sie können auf die in Ihrer Ereignistabelle gespeicherten Protokollmeldungen zugreifen, indem Sie auf der Ereignistabelle einen SELECT-Befehl ausführen. Weitere Informationen dazu finden Sie unter Zugriff auf protokollierte Meldungsdaten.