함수 및 프로시저의 메시지 로깅하기

Snowpark API 를 사용하여 작성한 메시지를 포함하여, 저장 프로시저, UDF 또는 UDTF의 메시지(예: 경고 또는 오류 메시지)를 로깅할 수 있습니다. 이벤트 테이블 (로깅된 메시지를 포함하여 이벤트를 캡처하는 미리 정의된 테이블 유형)에서 로깅된 메시지에 액세스할 수 있습니다. 지원되는 처리기 언어 목록은 지원되는 언어 섹션을 참조하십시오.

예를 들어 Java UDF에서 SLF4J API 를 사용하여 메시지를 로깅할 수 있습니다. 나중에 이벤트 테이블에 로깅된 메시지에 액세스할 수 있습니다.

참고

메시지 로깅을 시작하려면 먼저 이벤트 테이블을 설정해야 합니다. 자세한 내용은 이벤트 테이블 설정하기 섹션을 참조하십시오.

로깅 예

다음 예제의 Python 코드는 logging 모듈을 가져오고, 로거를 가져오고, INFO 수준에서 메시지를 로깅합니다.

참고

입력 행을 처리하는 메서드에서 로깅된 메시지는 UDF에서 처리한 모든 행에 대해 로깅됩니다. UDF가 큰 테이블에서 실행되면 이벤트 테이블에 많은 수의 메시지가 생성될 수 있습니다.

import logging

logger = logging.getLogger("mylog")

def test_logging(self):
    logger.info("This is an INFO test.")
Copy

시작하기

처리기 코드에서 로깅을 시작하려면 대략적으로 다음 단계를 따르십시오.

  1. 이벤트 테이블을 설정합니다.

    Snowflake는 이벤트 테이블을 사용하여 처리기 코드에서 로깅된 메시지를 저장합니다. 이벤트 테이블에는 Snowflake에서 미리 정의한 열이 있습니다.

  2. 사용할 처리기 언어에 대한 로깅 API를 익히십시오.

    처리기 언어 목록은 지원되는 언어 섹션을 참조하고, 해당 언어에서 로깅하는 방법에 대한 콘텐츠 를 확인하십시오.

  3. 처리기에 로깅 코드를 추가합니다.

  4. 이벤트 테이블에서 로깅 데이터 검색 방법을 알아보십시오.

로그 메시지의 수준

로그 수준을 설정하여 이벤트 테이블에 저장되는 로그 이벤트 데이터의 수준을 관리할 수 있습니다. 로깅하기 전에 이 설정을 사용하여 로그 메시지 심각도를 캡처하고 있는지 확인하십시오.

자세한 내용은 로그 수준 설정하기 섹션을 참조하십시오.

지원되는 언어

다음 언어로 작성된 함수 및 프로시저 처리기 코드의 메시지를 로깅할 수 있습니다.

언어/유형

Java

JavaScript

Python

Scala

SQL

저장 프로시저

✔ **

스칼라 UDF

UDTFs

✔ *

범례

*

여기에는 UDF를 만드는 데 사용된 Snowpark API 가 포함됩니다.

**

저장 프로시저를 작성하는 데 사용되는 Snowflake Scripting입니다.

참고

다음에 대해서는 로깅이 지원되지 않습니다.

처리기 코드 언어 지원

메시지를 로깅하기 위해 처리기 코드 언어에 공통적인 함수를 사용할 수 있습니다. Snowflake는 메시지를 가로채서 사용자가 만드는 이벤트 테이블에 이를 저장합니다.

예를 들어 Java UDF에서 SLF4J API 를 사용하여 메시지를 로깅할 수 있습니다. 나중에 이벤트 테이블에 로깅된 메시지에 액세스할 수 있습니다.

오류가 발생할 때 메시지를 로깅할 계획이라면 오류를 처리하는 구문 내에서 사용 중인 언어로 메시지를 로깅해야 합니다. 예를 들어 Java UDF에서 예외를 처리하는 catch 블록에서 메시지를 로깅하는 메서드를 호출합니다.

다음 표에는 로깅에 지원되는 처리기 언어와 코드에서 로깅하기에 관한 콘텐츠로 연결되는 링크가 함께 나와 있습니다.

언어

로깅 라이브러리

설명서

Java

SLF4J API

Java에서 메시지 로깅하기

JavaScript

Snowflake JavaScript API snowflake 오브젝트

JavaScript에서 메시지 로깅하기

Python

표준 라이브러리 logging 모듈

Python에서 메시지 로깅하기

Scala

SLF4J API

Scala에서 메시지 로깅하기

Snowflake Scripting

Snowflake SYSTEM$LOG 함수.

Snowflake Scripting에서 메시지 로깅하기

로그 메시지 액세스

이벤트 테이블에서 SELECT 명령을 실행하여 이벤트 테이블에 저장된 로그 메시지에 액세스할 수 있습니다. 자세한 내용은 로깅된 메시지 데이터에 액세스하기 섹션을 참조하십시오.

로깅 비용

함수 또는 프로시저에서 메시지를 로깅하면 Snowflake가 메시지를 일괄적으로 모아 이벤트 테이블로 수집합니다.

이 작업을 수행하기 위해 Snowflake는 서버리스 컴퓨팅 모델이라고도 하는 Snowflake 관리 리소스를 사용합니다. 다른 서버리스 기능 에서처럼, Snowflake는 로깅된 메시지를 수집하는 데 필요한 컴퓨팅 리소스와 클라우드 서비스 사용량에 대해 사용자의 계정에 요금을 청구합니다. 컴퓨팅 시간당 청구되는 Snowflake 크레딧:

  • Snowflake 관리 컴퓨팅 리소스: 1.25

  • 클라우드 서비스: 1

이러한 비용은 청구서에 별도 항목으로 표시됩니다.

시간의 경과에 따른 로깅의 크레딧 사용을 확인하려면 EVENT_USAGE_HISTORY 뷰 를 사용하십시오.

로깅 비용을 줄이는 방법은 다음과 같습니다.

  • 장기간에 걸쳐 자주 로깅하지 마십시오.

  • 특정 오브젝트에서 수집되는 메시지 수준을 설정하십시오. 예를 들어 모든 함수나 프로시저에 대한 로그 수준을 설정하는 대신 세션의 특정 함수나 프로시저에 대한 로그 수준을 설정합니다.