함수 및 프로시저의 메시지 로깅하기¶
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.")
시작하기¶
처리기 코드에서 로깅을 시작하려면 대략적으로 다음 단계를 따르십시오.
-
Snowflake는 이벤트 테이블을 사용하여 처리기 코드에서 로깅된 메시지를 저장합니다. 이벤트 테이블에는 Snowflake에서 미리 정의한 열이 있습니다.
사용할 처리기 언어에 대한 로깅 API를 익히십시오.
처리기 언어 목록은 지원되는 언어 섹션을 참조하고, 해당 언어에서 로깅하는 방법에 대한 콘텐츠 를 확인하십시오.
처리기에 로깅 코드를 추가합니다.
이벤트 테이블에서 로깅 데이터 검색 방법을 알아보십시오.
로그 메시지의 수준¶
로그 수준을 설정하여 이벤트 테이블에 저장되는 로그 이벤트 데이터의 수준을 관리할 수 있습니다. 로깅하기 전에 이 설정을 사용하여 로그 메시지 심각도를 캡처하고 있는지 확인하십시오.
자세한 내용은 로그 수준 설정하기 섹션을 참조하십시오.
지원되는 언어¶
처리기 코드가 Snowpark API 로 작성된 경우를 포함하여, 다음 언어로 작성된 함수 및 프로시저 처리기 코드의 메시지를 로깅할 수 있습니다.
언어/유형 |
Java |
JavaScript |
Python |
Scala |
SQL |
---|---|---|---|---|---|
저장 프로시저 |
✔ |
✔ |
✔ |
✔ |
✔ ** |
스칼라 UDF |
✔ |
✔ |
✔ |
✔ |
|
UDTFs |
✔ |
✔ |
✔ |
✔ * |
범례
- *:
Snowpark로 작성된 Scala UDTF 처리기.
- **:
저장 프로시저를 작성하는 데 사용되는 Snowflake Scripting입니다.
참고
외부 함수의 요청 및 응답 변환기 에는 로깅이 지원되지 않습니다.
처리기 코드 언어 지원¶
메시지를 로깅하기 위해 처리기 코드 언어에 공통적인 함수를 사용할 수 있습니다. Snowflake는 메시지를 가로채서 사용자가 만드는 이벤트 테이블에 이를 저장합니다.
예를 들어 Java UDF에서 SLF4J API 를 사용하여 메시지를 로깅할 수 있습니다. 나중에 이벤트 테이블에 로깅된 메시지에 액세스할 수 있습니다.
오류가 발생할 때 메시지를 로깅할 계획이라면 오류를 처리하는 구문 내에서 사용 중인 언어로 메시지를 로깅해야 합니다. 예를 들어 Java UDF에서 예외를 처리하는 catch
블록에서 메시지를 로깅하는 메서드를 호출합니다.
다음 표에는 로깅에 지원되는 처리기 언어와 코드에서 로깅하기에 관한 콘텐츠로 연결되는 링크가 함께 나와 있습니다.
언어 |
로깅 라이브러리 |
설명서 |
---|---|---|
Java |
SLF4J API |
|
JavaScript |
Snowflake JavaScript API |
|
Python |
표준 라이브러리 |
|
Scala |
SLF4J API |
|
Snowflake Scripting |
Snowflake SYSTEM$LOG 함수. |
로그 메시지 액세스¶
이벤트 테이블에서 SELECT 명령을 실행하여 이벤트 테이블에 저장된 로그 메시지에 액세스할 수 있습니다. 자세한 내용은 로깅된 메시지 데이터에 액세스하기 섹션을 참조하십시오.