- 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> ] )
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.
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¶
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 - |
+-----------------------------------------------------------------------------------------------------+