SYSTEM$GET_SERVICE_LOGS

Recupera logs locais de um contêiner de serviço do Snowpark Container Services.

Consulte também:

Acesso a logs de contêiner locais

Sintaxe

GET_SERVICE_LOGS( <service_name>, <instance_id>, <container_name>
   [, <number_of_most_recent_lines> ] )
Copy

Argumentos

Obrigatório:

service_name

Nome do serviço.

instance_id

ID da instância de serviço, começando com 0.

container_name

Nome do contêiner conforme especificado no arquivo de especificação de serviço.

Opcional:

number_of_most_recent_lines

Número de linhas de log finais a serem recuperadas.

Padrão: até 100 KB das linhas de logs mais recentes.

Retornos

Retorna uma cadeia de caracteres que consiste em entradas de log separadas por nova linha do contêiner de serviço especificado.

Notas de uso

  • A função atual deve ter o privilégio MONITOR no serviço para acessar os logs do contêiner.

  • A função retorna um log de contêiner como uma cadeia de caracteres. Você pode usar a função SPLIT_TO_TABLE para converter a cadeia de caracteres em uma tabela contendo uma linha para cada entrada separada por nova linha.

Exemplos

A instrução a seguir recupera as últimas 10 linhas de log da instância 0 do serviço “echo_service» que está em execução no contêiner «echo»:

SELECT SYSTEM$GET_SERVICE_LOGS('TUTORIAL_DB.data_schema.echo_service', 0, 'echo', 10);
Copy

Você também pode seguir Tutorial 1: Criar um serviço Snowpark Container Services para iniciar um serviço e executar o comando anterior para obter o log de serviço de um contêiner.

A função retorna uma cadeia de caracteres que consiste em entradas de log separadas por nova linha. Você pode converter essa cadeia de caracteres em uma tabela usando a função SPLIT_TO_TABLE e a palavra-chave TABLE() (consulte Funções de tabela).

SELECT value AS log_line
FROM TABLE(
 SPLIT_TO_TABLE(SYSTEM$GET_SERVICE_LOGS('echo_service', 0, 'echo'), '\n')
  )
Copy

Você também pode aplicar um filtro para recuperar apenas entradas de log específicas. A cláusula WHERE na instrução SELECT a seguir usa a função CONTAINS para recuperar apenas as linhas de log que contêm uma cadeia de caracteres de data específica:

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;
Copy

O exemplo de saída a seguir mostra três linhas de entrada de log recuperadas:

+-----------------------------------------------------------------------------------------------------+
| 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 -                            |
+-----------------------------------------------------------------------------------------------------+
3 Row(s) produced.
Copy