SPCS_GET_LOGS

SPCS_GET_LOGS

지정한 서비스의 컨테이너에서 Snowflake가 수집한 로그를 반환해요. 자세한 내용은 컨테이너 로그 게시 및 접근(Publishing and accessing container logs) 문서를 참고해요.

출처: Snowflake SQL Reference - SPCS_GET_LOGS

본문

구문

<service_name>!SPCS_GET_LOGS(
  [ START_TIME => <constant_expr> ],
  [ END_TIME => <constant_expr> ] )

인자

START_TIME => constant_expr

  • 로그를 가져올 시간 범위의 시작 시각(TIMESTAMP_LTZ 형식)이에요. 날짜·시간·타임스탬프 데이터를 만드는 데 쓸 수 있는 함수는 날짜 및 시간 함수(Date & time functions) 문서를 참고해요. START_TIME을 지정하지 않으면 기본값은 하루 전이에요.

END_TIME => constant_expr

  • 로그를 가져올 시간 범위의 종료 시각(TIMESTAMP_LTZ 형식)이에요. END_TIME을 지정하지 않으면 기본값은 현재 타임스탬프예요.

출력

출력의 각 행은 이벤트 테이블에 기록된 하나의 로그 이벤트에 대응해요. 서비스가 stdout 또는 stderr로 출력하는 각 줄은 출력에서 한 행이 돼요.

이 함수는 다음 열을 반환해요.

열 데이터 타입 설명
TIMESTAMP TIMESTAMP_NTZ Snowflake가 컨테이너에서 로그를 수집한 협정 세계시(UTC) 타임스탬프예요. 이 값은 이벤트 테이블의 TIMESTAMP 열에 대응해요.
INSTANCE_ID NUMBER 작업 서비스 인스턴스의 ID예요. 이 값은 이벤트 테이블의 RESOURCE_ATTRIBUTES 열에 있는 snow.service.instance 필드에 대응해요.
CONTAINER_NAME VARCHAR 컨테이너의 이름이에요. 이 값은 이벤트 테이블의 RESOURCE_ATTRIBUTES 열에 있는 snow.service.container.name 필드에 대응해요.
LOG VARCHAR Snowflake가 애플리케이션 컨테이너에서 수집한 로그예요. 이 값은 이벤트 테이블의 VALUE 열에 대응해요.
RECORD_ATTRIBUTES OBJECT 로그에 대한 추가 정보예요. 예를 들어 로그가 수집된 로그 스트림(stderr 또는 stdout) 등이 있어요. 이 값은 이벤트 테이블의 RECORD_ATTRIBUTES 열에 대응해요.

접근 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요.

권한 객체 참고
MONITOR Service

스키마의 객체에 대해 작업하려면 상위 데이터베이스에 대한 권한이 하나 이상이고 상위 스키마에 대한 권한이 하나 이상이어야 해요.

지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles) 문서를 참고해요. 보호 가능한 객체를 대상으로 SQL 작업을 수행할 때 역할과 권한 부여에 대한 일반 정보는 접근 제어 개요(Overview of Access Control) 문서를 참고해요.

사용법 참고 사항

  • 출력에 컨테이너 로그가 나타나기까지 몇 분이 걸릴 수 있어요.

예제

지난 하루 동안 my_test_job 작업의 컨테이너에서 Snowflake가 수집한 로그를 가져와요.

SELECT * FROM TABLE(mydb.myschema.my_test_job!SPCS_GET_LOGS());

예제 출력:

+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+
| TIMESTAMP               | INSTANCE_ID | CONTAINER_NAME | LOG                                                                                                                                                                 | RECORD_ATTRIBUTES          |
|-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------|
| 2025-06-26 00:23:40.281 |           0 | main           | job-tutorial - INFO - Job finished                                                                                                                                  | {                          |
|                         |             |                |                                                                                                                                                                     |   "log.iostream": "stdout" |
|                         |             |                |                                                                                                                                                                     | }                          |
| 2025-06-26 00:23:38.787 |           0 | main           | job-tutorial - INFO - Executing query [select current_time() as time,'hello'] and writing result to table [results]                                                 | {                          |
|                         |             |                |                                                                                                                                                                     |   "log.iostream": "stdout" |
|                         |             |                |                                                                                                                                                                     | }                          |
| 2025-06-26 00:23:38.787 |           0 | main           | job-tutorial - INFO - Connection succeeded. Current session context: database="TUTORIAL_DB", schema="DATA_SCHEMA", warehouse="TUTORIAL_WAREHOUSE", role="TEST_ROLE" | {                          |
|                         |             |                |                                                                                                                                                                     |   "log.iostream": "stdout" |
|                         |             |                |                                                                                                                                                                     | }                          |
| 2025-06-26 00:23:36.852 |           0 | main           | job-tutorial - INFO - Job started                                                                                                                                   | {                          |
|                         |             |                |                                                                                                                                                                     |   "log.iostream": "stdout" |
|                         |             |                |                                                                                                                                                                     | }                          |
+-------------------------+-------------+----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------+

지난 3일 동안 my_test_job 작업의 컨테이너에서 Snowflake가 수집한 로그를 가져와요.

SELECT * FROM TABLE(mydb.myschema.my_test_job!SPCS_GET_LOGS(START_TIME => DATEADD('day', -3, CURRENT_TIMESTAMP())));

main이라는 컨테이너의 my_test_job 작업 인스턴스 0에 대한 로그를 가져와요. 다음 예제처럼 START_TIME과 END_TIME 인자를 생략하면 함수는 지난 하루 동안의 로그를 가져와요.

SELECT * FROM TABLE(mydb.myschema.my_test_job!SPCS_GET_LOGS())
WHERE instance_id = 0 AND container_name = 'main';

더 알아보기