Python에서 메시지 로깅하기¶
Python 표준 라이브러리의 로깅 모듈인 로깅 을 사용하여 Python으로 작성된 함수 또는 프로시저 처리기의 메시지를 로깅할 수 있습니다. 로그 항목을 저장하도록 이벤트 테이블을 설정하면 Snowflake가 처리기 코드에서 생성된 로그 항목을 테이블에 저장합니다.
Python에서 지원하는 로깅 수준에 대한 자세한 내용은 로깅 수준 설명서 를 참조하십시오. Snowflake는 다음과 같이 Python 로깅 수준 중 두 가지를 특정한 방식으로 처리합니다.
Python
CRITICAL
수준은 FATAL로 처리됩니다.Python
NOTSET
수준은 TRACE로 처리됩니다.
Snowflake에서 로깅 설정 및 메시지 검색에 대한 일반적인 정보는 함수 및 프로시저의 메시지 로깅하기 섹션을 참조하십시오.
코드에서 로깅하기 전에 다음을 수행해야 합니다.
처리기 코드에서 로깅된 메시지를 수집하도록 이벤트 테이블을 설정합니다.
자세한 내용은 이벤트 테이블 설정하기 섹션을 참조하십시오.
원하는 메시지가 이벤트 테이블에 저장되도록 로깅 수준을 설정했는지 확인합니다.
자세한 내용은 로그 수준 설정하기 섹션을 참조하십시오.
Python 예제¶
다음 예제의 코드는 logging
모듈을 가져오고, 로거를 가져오고, INFO
수준에서 메시지를 로깅합니다.
Python에서 지원하는 로깅 수준에 대한 자세한 내용은 로깅 수준 설명서 를 참조하십시오.
CREATE OR REPLACE PROCEDURE do_logging()
RETURNS VARCHAR
LANGUAGE PYTHON
PACKAGES=('snowflake-snowpark-python')
RUNTIME_VERSION=3.8
HANDLER='do_things'
AS $$
import logging
logger = logging.getLogger("python_logger")
logger.info("Logging from Python module.")
def do_things(session):
logger.info("Logging from Python function start.")
try:
throw_exception()
except Exception:
logger.error("Logging an error from Python handler: ")
return "ERROR"
return "SUCCESS"
def throw_exception():
raise Exception("Something went wrong.")
$$;
이벤트 테이블에서 SELECT 명령을 실행하여 로그 메시지에 액세스할 수 있습니다. 자세한 내용은 로깅된 메시지 데이터에 액세스하기 섹션을 참조하십시오.
다음 예제의 코드는 로그 메시지가 저장된 이벤트 테이블을 쿼리합니다. 이 쿼리는 처리기 클래스에서 각 로그 항목의 심각도와 메시지에 대해 보고합니다.
SET event_table_name='my_db.public.my_event_table';
SELECT
RECORD['severity_text'] AS SEVERITY,
VALUE AS MESSAGE
FROM
IDENTIFIER($event_table_name)
WHERE
SCOPE['name'] = 'python_logger'
AND RECORD_TYPE = 'LOG';
앞의 예제에서는 다음 출력을 생성합니다.
---------------------------------------------------------------------------
| SEVERITY | MESSAGE |
---------------------------------------------------------------------------
| "INFO" | "Logging from Python module." |
---------------------------------------------------------------------------
| "INFO" | "Logging from Python function start." |
---------------------------------------------------------------------------
| "ERROR" | "Logging an error from Python handler." |
---------------------------------------------------------------------------