- Kategorien:
Systemfunktionen (Systeminformationen)
SYSTEM$GET_SERVICE_LOGS¶
Ruft lokale Protokolle von einem Snowpark Container Services-Dienstcontainer ab.
- Siehe auch:
Syntax¶
SYSTEM$GET_SERVICE_LOGS( <service_name>, <instance_id>, <container_name>
[, <number_of_most_recent_lines> ] [, <retrieve_previous_logs> ])
Argumente¶
Benötigt:
service_name
Name des Dienstes.
instance_id
ID der Dienstinstanz, beginnend mit 0.
container_name
Containername, wie in der Dienstspezifikationsdatei angegeben.
Optional:
number_of_most_recent_lines
Anzahl der letzten abzurufenden Protokollzeilen.
Standard: Bis zu 100 KB der neuesten Protokollzeilen.
retrieve_previous_logs
Falls TRUE, ruft die Funktion Protokolle aus einem zuvor beendeten Container ab. Sie können diesen Parameter nur angeben, wenn der Container mindestens einmal neu gestartet wurde.
Standardwert: false (Abrufen von Protokollen aus dem aktuell laufenden Container).
Rückgabewerte¶
Gibt eine Zeichenfolge zurück, die aus durch Zeilenumbrüche getrennten Protokolleinträgen aus dem angegebenen Dienstcontainer besteht.
Nutzungshinweise¶
Die aktuelle Rolle muss die Berechtigung MONITOR für den Dienst haben, um auf die Containerprotokolle zuzugreifen.
Die Funktion gibt ein Containerprotokoll als Zeichenfolge zurück. Sie können die Funktion SPLIT_TO_TABLE verwenden, um die Zeichenfolge in eine Tabelle umzuwandeln, die eine Zeile für jeden durch Zeilenumbrüche getrennten Eintrag enthält.
Beispiele¶
Abrufen von Protokollen aus dem aktuellen Container¶
Die folgende Anweisung ruft die letzten 10 Protokollzeilen von Instanz 0 des Dienstes „echo_service“ ab, der im Container „echo“ ausgeführt wird:
SELECT SYSTEM$GET_SERVICE_LOGS('TUTORIAL_DB.data_schema.echo_service', 0, 'echo', 10);
Sie können auch Tutorial 1: Snowpark Container Services-Dienst erstellen ausführen, um einen Dienst zu starten und den obigen Befehl auszuführen, um das Dienstprotokoll von einem Container zu erhalten.
Die Funktion gibt eine Zeichenfolge zurück, die aus durch Zeilenumbrüche getrennten Protokolleinträgen besteht. Sie können diese Zeichenfolge mit der Funktion SPLIT_TO_TABLE und dem Schlüsselwort TABLE() in eine Tabelle umwandeln (siehe Tabellenfunktionen).
SELECT value AS log_line
FROM TABLE(
SPLIT_TO_TABLE(SYSTEM$GET_SERVICE_LOGS('echo_service', 0, 'echo'), '\n')
)
Sie können außerdem einen Filter anwenden, um nur bestimmte Protokolleinträge abzurufen. Die WHERE-Klausel in der folgenden SELECT-Anweisung verwendet die CONTAINS-Funktion, um nur die Protokollzeilen abzurufen, die eine bestimmte Datumszeichenfolge enthalten:
SELECT value AS log_line
FROM TABLE(
SPLIT_TO_TABLE(SYSTEM$GET_SERVICE_LOGS('echo_service', '0', 'echo'), '\n')
)
WHERE (CONTAINS(log_line, '06/Jun/2023 02:44:'))
ORDER BY log_line;
Die folgende Beispielausgabe zeigt drei abgerufene Protokollzeilen:
+-----------------------------------------------------------------------------------------------------+
| LOG_LINE |
|-----------------------------------------------------------------------------------------------------|
| 10.16.9.193 - - [06/Jun/2023 02:44:04] "GET /healthcheck HTTP/1.1" 200 - |
| 10.16.9.193 - - [06/Jun/2023 02:44:09] "GET /healthcheck HTTP/1.1" 200 - |
| 10.16.9.193 - - [06/Jun/2023 02:44:14] "GET /healthcheck HTTP/1.1" 200 - |
+-----------------------------------------------------------------------------------------------------+
Abrufen von Protokollen aus einem zuvor beendeten Container¶
Die folgende Anweisung ruft die letzten 10 Protokollzeilen von der zuvor beendeten Instanz des Dienstes „echo_service“ ab, der im Container „echo“ läuft. Hier gehen wir davon aus, dass der Container mindestens einmal neu gestartet wurde:
SELECT SYSTEM$GET_SERVICE_LOGS('TUTORIAL_DB.data_schema.echo_service', 0, 'echo', 10, true);