<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 Auf Containerprotokolle zugreifen.
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_expr
Startzeit (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_TIME
nicht angegeben ist, wird sie standardmäßig auf „Vor einem Tag“ eingestellt.END_TIME => constant_expr
Endzeit (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.
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';