Erfassen von Meldungen aus unbehandelten Ausnahmen¶
Sie können unbehandelte Ausnahmen in Prozedur- und UDF-Handlern automatisch als Protokoll- oder Ablaufverfolgungsmeldungen in einer Ereignistabelle erfassen lassen. Für das Erfassen dieser Meldungen ist es nicht erforderlich, dass Sie speziellen Handler-Code für die Protokollierung oder Ablaufverfolgung hinzufügen.
Bemerkung
Dieses Feature wird derzeit nur für in Java oder Python geschriebenen Handler-Code unterstützt.
Wichtig
Fehlermeldungen können sensible Informationen enthalten. Bevor Sie dieses Feature aktivieren, sollten Sie überlegen, ob Sie potenziell sensible Informationen in einer Ereignistabelle erfassen möchten. Weitere Informationen dazu finden Sie unter Schutz sensibler Daten.
Erfassen unbehandelter Ausnahmeeinträge aktivieren¶
Gehen Sie wie folgt vor, um das Erfassen von Meldungen über unbehandelte Ausnahmen zu aktivieren:
Richten Sie eine Ereignistabelle ein, wie unter Einrichten einer Ereignistabelle beschrieben.
Setzen Sie den Parameter
ENABLE_UNHANDLED_EXCEPTIONS_REPORTING
auftrue
.Weitere Informationen zum Einstellen von Parametern finden Sie unter Parameterverwaltung.
Stellen Sie die Protokoll- oder Ablaufverfolgungsebene so ein, dass Snowflake Einträge für unbehandelte Ausnahmen erfasst. Sie können Einträge als Protokolleinträge, Ablaufverfolgungsereignis-Einträge oder beides erfassen lassen.
Um Meldungen als Protokolleinträge zu erfassen, setzen Sie den Protokolliergrad auf
ERROR
oder eine ausführlichere Stufe.Um Meldungen als Ablaufverfolgungsereignis-Einträge zu erfassen, setzen Sie den Protokolliergrad (Ablaufverfolgungsebene) auf
ALWAYS
oderON_EVENT
.
Erfasste Daten für unbehandelte Ausnahmen¶
Wie unter Erfassen unbehandelter Ausnahmeeinträge aktivieren beschrieben, können Sie Meldungsdaten als Protokolleintrag, Ablaufverfolgungsereignis oder beides erfassen. Die erfassten Daten unterscheiden sich zwischen Protokolleinträgen und Ablaufverfolgungsereignis-Einträgen.
In einem Protokolleintrag erfasste Daten¶
Wenn Sie das Erfassen von unbehandelten Ausnahmen als Protokollmeldungen aktiviert haben, zeichnet Snowflake Folgendes in der Ereignistabelle auf:
Spalte |
Daten |
---|---|
Attribut |
|
Die folgenden Attribute werden für eine unbehandelte Ausnahme erfasst.
|
|
Die Zeichenfolge |
Beispiel¶
Der Code im folgenden Beispiel fragt eine Ereignistabelle nach Protokolldaten ab, die von einem UDF-Handler zu einer unbehandelten Ausnahme erfasst wurden.
Weitere Informationen zum Abfragen einer Ereignistabelle nach Protokolldaten finden Sie unter Zugriff auf protokollierte Meldungsdaten.
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['severity_text'] AS severity,
RECORD_ATTRIBUTES['exception.message'] AS error_message,
RECORD_ATTRIBUTES['exception.type'] AS exception_type,
RECORD_ATTRIBUTES['exception.stacktrace'] AS stacktrace
FROM
my_event_table
WHERE
RECORD_TYPE = 'LOG';
Im Folgenden sehen Sie eine mögliche Ausgabe für diese Abfrage.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SEVERITY | ERROR_MESSAGE | EXCEPTION_TYPE | STACKTRACE |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| "FATAL" | "could not convert string to float: '$1,000,000.00'" | "ValueError" | "Traceback (most recent call last):\n File \"_udf_code.py\", line 6, in compute\nValueError: could not convert string to float: '$1,000,000.00'\n" |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
In einem Ablaufverfolgungsereignis-Eintrag erfasste Daten¶
Wenn Sie das Erfassen von unbehandelten Ausnahmen als Ablaufverfolgungsereignis aktiviert haben, zeichnet Snowflake Folgendes in der Ereignistabelle auf:
Spalte |
Daten |
---|---|
Ein Attribut |
|
Die folgenden Attribute werden für eine unbehandelte Ausnahme erfasst.
|
Beispiele¶
Der Code in den folgenden Beispielen fragt eine Ereignistabelle nach Daten zu Ablaufverfolgungsereignissen ab, die von einem UDF-Handler zu einer unbehandelten Ausnahme erfasst wurden.
Weitere Informationen zum Abfragen einer Ereignistabelle für Daten zu Ablaufverfolgungsereignissen finden Sie unter Zugriff auf Ablaufverfolgungsdaten.
Beispiel für Span¶
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['status']['code'] AS span_status
FROM
my_event_table
WHERE
record_type = 'SPAN';
Im Folgenden sehen Sie eine mögliche Ausgabe für diese Abfrage.
-----------------------
| SPAN_STATUS |
-----------------------
| "STATUS_CODE_ERROR" |
-----------------------
Beispiel für Span-Ereignis¶
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['name'] AS event_name,
RECORD_ATTRIBUTES['exception.message'] AS error_message,
RECORD_ATTRIBUTES['exception.type'] AS exception_type,
RECORD_ATTRIBUTES['exception.stacktrace'] AS stacktrace
FROM
my_event_table
WHERE
RECORD_TYPE = 'SPAN_EVENT';
Im Folgenden sehen Sie eine mögliche Ausgabe für diese Abfrage.
-----------------------------------------------------------------------------------------------------------------------------------------
| EVENT_NAME | ERROR_MESSAGE | EXCEPTION_TYPE | STACKTRACE |
-----------------------------------------------------------------------------------------------------------------------------------------
| "exception" | "could not convert string to float: '$1,000,000.00'" | "ValueError" | " File \"_udf_code.py\", line 6, in compute\n" |
-----------------------------------------------------------------------------------------------------------------------------------------
Schutz sensibler Daten¶
Da Protokoll- und Ablaufverfolgungsmeldungen von unbehandelten Ausnahmen sensible Daten enthalten können, sollten Sie folgende Maßnahmen zum Schutz dieser Daten ergreifen:
Deaktivieren Sie die Protokollierung unbehandelter Ausnahmen, indem Sie den Parameter ENABLE_UNHANDLED_EXCEPTIONS_REPORTING auf
false
setzen.Ergreifen Sie Maßnahmen zum Schutz sensibler Daten, indem Sie z. B. Folgendes tun:
Verbessern Sie Ihren Code zur Ausnahmebehandlung, um das Risiko von unbehandelten Ausnahmen zu minimieren.
Wenden Sie Zeilenzugriffsrichtlinien auf Ihrer Ereignistabelle an, um den Zugriff auf Zeilen zu beschränken, die PII-Daten (personenidentifizierbare Informationen) enthalten.
Erstellen Sie eine Ansicht über der Ereignistabelle, und wenden Sie Maskierungsrichtlinien darauf an, um PII-Daten (personenidentifizierbare Informationen) zu maskieren oder zu löschen.