<service_name>!SPCS_GET_LOGS¶
Gibt die Protokolle zurück, die Snowflake aus Containern des angegebenen Dienstes gesammelt hat. Weitere Informationen dazu finden Sie unter Veröffentlichen und Zugreifen auf Containerprotokolle.
Bemerkung
Die Funktion wird nur für Services und Jobs unterstützt, die in Release 9.20 oder höher erstellt wurden.
- Siehe auch:
Syntax¶
<service_name>!SPCS_GET_LOGS(
[ START_TIME => <constant_expr> ],
[ END_TIME => <constant_expr> ] )
Argumente¶
START_TIME => constant_exprStartzeit (im TIMESTAMP_LTZ-Format) für den Zeitbereich, aus dem Protokolle abgerufen werden sollen. Verfügbare Funktionen zum Erstellen von Daten-, Zeit- und Zeitstempeldaten finden Sie unter Datums- und Uhrzeitfunktionen.
Wenn die
START_TIMEnicht angegeben ist, wird sie standardmäßig auf „Vor einem Tag“ eingestellt.END_TIME => constant_exprEndzeit (im TIMESTAMP_LTZ-Format) für den Zeitbereich, aus dem Protokolle abgerufen werden sollen.
Wenn END_TIME nicht angegeben ist, wird standardmäßig der aktuelle Zeitstempel verwendet.
Ausgabe¶
Jede Zeile der Ausgabe entspricht einem protokollierten Ereignis in der Ereignistabelle. Jede Zeile, die Ihr Dienst an stdout oder stderr ausgibt, führt zu einer Zeile in der Ausgabe.
Die Funktion gibt die folgenden Spalten zurück:
Spalte |
Datentyp |
Beschreibung |
|---|---|---|
|
TIMESTAMP_NTZ |
Universal Coordinated Time (UTC)-Zeitstempel, zu dem Snowflake das Protokoll aus dem Container erfasst hat. Dieser Wert wird der TIMESTAMP-Spalte in der Ereignistabelle zugeordnet. |
|
NUMBER |
ID der Jobdienst-Instanz. Dieser Wert wird dem Feld in der Spalte RESOURCE_ATTRIBUTES der Ereignistabelle zugeordnet. |
|
VARCHAR |
Name des Containers. Dieser Wert wird dem Feld |
|
VARCHAR |
Protokolleinträge von Snowflake, die von Ihrem Anwendungscontainer erfasst wurden. Dieser Wert wird der VALUE-Spalte in der Ereignistabelle zugeordnet. |
|
OBJECT |
Zusätzliche Informationen über das Protokoll. Beispiel: Der Protokoll-Stream – stderr oder stdout –, von dem aus das Protokoll erfasst wurde. Dieser Wert wird der RECORD_ATTRIBUTES-Spalte in der Ereignistabelle zugeordnet. |
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
|---|---|---|
OWNERSHIP |
Dienst |
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen. Beachten Sie, dass eine Rolle, die eine beliebige Berechtigung für ein Schema erhalten hat, es dieser Rolle erlaubt, das Schema aufzulösen. Zum Beispiel kann eine Rolle, der die CREATE-Berechtigung für ein Schema gewährt wurde, Objekte in diesem Schema erstellen, ohne auch USAGE für dieses Schema gewährt bekommen zu haben.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Es kann einige Minuten dauern, bis Ihre Containerprotokolle in der Ausgabe angezeigt werden.
Beispiele¶
Rufen Sie die Protokolle ab, die Snowflake im Laufe des letzten Tages aus Containern des my_test_job-Jobs gesammelt hat.
SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS());
Beispielausgabe:
+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+
| TIMESTAMP | INSTANCE_ID | CONTAINER_NAME | LOG | RECORD_ATTRIBUTES |
|-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------|
| 2025-06-26 00:23:40.281 | 0 | main | job-tutorial - INFO - Job finished | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
| 2025-06-26 00:23:38.787 | 0 | main | job-tutorial - INFO - Executing query [select current_time() as time,'hello'] and writing result to table [results] | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
| 2025-06-26 00:23:38.787 | 0 | main | job-tutorial - INFO - Connection succeeded. Current session context: database="TUTORIAL_DB", schema="DATA_SCHEMA", warehouse="TUTORIAL_WAREHOUSE", role="TEST_ROLE" | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
| 2025-06-26 00:23:36.852 | 0 | main | job-tutorial - INFO - Job started | { |
| | | | | "log.iostream": "stdout" |
| | | | | } |
+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+
Rufen Sie die Protokolle ab, die Snowflake im Laufe des letzten drei Tage aus Containern des my_test_job-Jobs gesammelt hat.
SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS(START_TIME => DATEADD('day', -3, CURRENT_TIMESTAMP())));
Rufen Sie die Protokolle für die my_test_job-Jobinstanz 0 in dem Container namens main ab. Wie im folgenden Beispiel gezeigt, ruft die Funktion die Protokolle des letzten Tages ab, wenn Sie die START_TIME- und END_TIME-Argumente weglassen:
SELECT * FROM TABLE(my_test_job!SPCS_GET_LOGS())
WHERE instance_id = 0 AND container_name = 'main';