- 카테고리:
시스템 함수 (시스템 정보)
SYSTEM$GET_SERVICE_LOGS¶
Snowpark Container Services 서비스 컨테이너에서 로컬 로그를 검색합니다.
- 참고 항목:
구문¶
SYSTEM$GET_SERVICE_LOGS( <service_name>, <instance_id>, <container_name>
[, <number_of_most_recent_lines> ] )
인자¶
필수:
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);
또한 자습서 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')
)
추가로 필터를 적용하여 특정 로그 항목만 검색할 수 있습니다. 다음 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;
다음 샘플 출력은 검색된 로그 항목 행 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 - |
+-----------------------------------------------------------------------------------------------------+