SYSTEM$GET_SERVICE_LOGS

Snowpark Container Services 서비스 컨테이너에서 로컬 로그를 검색합니다.

참고 항목:

로컬 컨테이너 로그에 액세스하기

구문

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

인자

필수:

service_name

서비스 이름입니다.

instance_id

0으로 시작하는 서비스 인스턴스의 ID입니다.

container_name

서비스 사양 파일에 지정된 컨테이너 이름입니다.

선택 사항:

number_of_most_recent_lines

검색할 후행 로그 줄 수입니다.

기본값: 최대 100KB의 최신 로그 줄.

반환

지정된 서비스 컨테이너에서 줄 바꿈으로 구분된 로그 항목으로 구성된 문자열을 반환합니다.

사용법 노트

  • 컨테이너 로그에 액세스하려면 현재 역할에 서비스에 대한 MONITOR 권한이 있어야 합니다.

  • 이 함수는 컨테이너 로그를 문자열로 반환합니다. SPLIT_TO_TABLE 함수를 사용하여 문자열을 줄 바꿈으로 구분된 각 항목에 대해 하나의 행을 포함하는 테이블로 변환할 수 있습니다.

다음 문은 《echo》 컨테이너에서 실행 중인 《echo_service》 서비스의 인스턴스 0에서 마지막 10개의 로그 줄을 검색합니다.

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

또한 자습서 1: Snowpark Container Services 서비스 생성 에 따라 서비스를 시작하고 이전 명령을 실행하여 컨테이너에서 서비스 로그를 가져올 수도 있습니다.

이 함수는 줄 바꿈으로 구분된 로그 항목으로 구성된 문자열을 반환합니다. SPLIT_TO_TABLE 함수와 TABLE() 키워드를 사용하여 이 문자열을 테이블로 변환할 수 있습니다(테이블 함수 참조).

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

추가로 필터를 적용하여 특정 로그 항목만 검색할 수 있습니다. 다음 SELECT 문의 WHERE 절은 CONTAINS 함수를 사용하여 특정 날짜 문자열이 포함된 로그 줄만 검색합니다.

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

다음 샘플 출력은 검색된 로그 항목 행 3개를 보여줍니다.

+-----------------------------------------------------------------------------------------------------+
| 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