처리되지 않은 예외의 메시지 캡처하기¶
기본적으로 이벤트 테이블을 설정 하면 Snowflake는 이벤트 테이블의 프로시저 및 UDF 처리기에서 처리되지 않은 예외를 자동으로 기록합니다. 이러한 메시지를 캡처하려면 로깅 또는 추적과 관련된 처리기 코드를 추가하지 않아도 됩니다. 처리되지 않은 예외가 자동으로 기록되지 않도록 이 기능을 비활성화할 수 있습니다.
중요
오류 메시지에는 민감한 정보가 포함될 수 있습니다. 잠재적으로 민감한 정보를 이벤트 테이블에 캡처하지 않으려면 이 기능을 비활성화하는 것이 좋습니다. 자세한 내용은 민감한 데이터 보호하기 을 참조하십시오.
참고
이 기능은 현재 Java 또는 Python으로만 작성된 처리기 코드에 대해 지원됩니다.
처리되지 않은 예외를 캡처하도록 로깅 및 추적 구성하기¶
Snowflake가 처리되지 않은 예외에 대한 항목을 캡처하도록 로그 또는 추적 수준을 설정합니다. 항목을 로그 항목, 추적 이벤트 항목 또는 둘 다로 캡처할 수 있습니다.
처리되지 않은 예외에 대해 캡처된 데이터¶
메시지 데이터를 로그 항목, 추적 이벤트 또는 둘 다로 캡처할 수 있습니다. 캡처된 데이터는 로그 이벤트 항목과 추적 이벤트 항목 간에 차이가 있습니다.
로그 항목에 캡처된 데이터¶
기본적으로, Snowflake는 프로시저 및 UDF 처리기에서 처리되지 않은 예외에 대해 이벤트 테이블에 다음을 기록합니다.
열 |
데이터 |
---|---|
값이 현재 언어 런타임에 대해 심각도가 가장 높은 오류 수준인 |
|
처리되지 않은 예외에 대해 다음 특성이 기록됩니다.
|
|
문자열 |
예¶
다음 예제의 코드는 UDF 처리기에서 처리되지 않은 예외에 대해 기록된 로그 데이터의 이벤트 테이블을 쿼리합니다.
로그 데이터의 이벤트 테이블 쿼리에 대한 자세한 내용은 로깅된 메시지 데이터에 액세스하기 섹션을 참조하십시오.
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['severity_text'] AS severity,
RECORD_ATTRIBUTES['exception.message'] AS error_message,
RECORD_ATTRIBUTES['exception.type'] AS exception_type,
RECORD_ATTRIBUTES['exception.stacktrace'] AS stacktrace
FROM
my_event_table
WHERE
RECORD_TYPE = 'LOG';
쿼리에서 다음 출력이 가능합니다.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SEVERITY | ERROR_MESSAGE | EXCEPTION_TYPE | STACKTRACE |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| "FATAL" | "could not convert string to float: '$1,000,000.00'" | "ValueError" | "Traceback (most recent call last):\n File \"_udf_code.py\", line 6, in compute\nValueError: could not convert string to float: '$1,000,000.00'\n" |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
추적 이벤트 항목에 캡처된 데이터¶
기본적으로, Snowflake는 프로시저 및 UDF 처리기에서 처리되지 않은 예외에 대해 이벤트 테이블에 다음을 기록합니다.
열 |
데이터 |
---|---|
값이 |
|
처리되지 않은 예외에 대해 다음 특성이 기록됩니다.
|
예¶
다음 예제의 코드는 UDF 처리기에서 처리되지 않은 예외에 대해 기록된 추적 이벤트 데이터의 이벤트 테이블을 쿼리합니다.
추적 이벤트 데이터의 이벤트 테이블 쿼리에 대한 자세한 내용은 추적 데이터에 액세스하기 섹션을 참조하십시오.
Span 예¶
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['status']['code'] AS span_status
FROM
my_event_table
WHERE
record_type = 'SPAN';
쿼리에서 다음 출력이 가능합니다.
-----------------------
| SPAN_STATUS |
-----------------------
| "STATUS_CODE_ERROR" |
-----------------------
Span 이벤트 예¶
SET event_table_name = 'my_db.public.my_event_table';
SELECT
RECORD['name'] AS event_name,
RECORD_ATTRIBUTES['exception.message'] AS error_message,
RECORD_ATTRIBUTES['exception.type'] AS exception_type,
RECORD_ATTRIBUTES['exception.stacktrace'] AS stacktrace
FROM
my_event_table
WHERE
RECORD_TYPE = 'SPAN_EVENT';
쿼리에서 다음 출력이 가능합니다.
-----------------------------------------------------------------------------------------------------------------------------------------
| EVENT_NAME | ERROR_MESSAGE | EXCEPTION_TYPE | STACKTRACE |
-----------------------------------------------------------------------------------------------------------------------------------------
| "exception" | "could not convert string to float: '$1,000,000.00'" | "ValueError" | " File \"_udf_code.py\", line 6, in compute\n" |
-----------------------------------------------------------------------------------------------------------------------------------------
민감한 데이터 보호하기¶
처리되지 않은 예외의 로그 및 추적 메시지에 민감한 데이터가 포함될 수 있다는 점을 고려하면 해당 데이터를 보호하기 위해 다음을 수행하는 것이 좋습니다.
다음과 같은 방법으로 민감한 데이터를 보호하는 조치를 취하십시오.
처리되지 않은 예외의 위험을 최소화하도록 예외 처리 코드를 개선합니다.
개인 식별 정보(PII)가 포함된 행에 대한 액세스를 제한하도록 이벤트 테이블에 행 액세스 정책 을 적용합니다.
이벤트 테이블 위에 뷰를 생성하고 이 뷰에 마스킹 정책을 적용하여 개인 식별 정보(PII)를 마스킹하거나 삭제합니다.
ENABLE_UNHANDLED_EXCEPTIONS_REPORTING 매개 변수를
false
로 설정하여 처리되지 않은 예외 로깅을 해제합니다.