

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Python UDF에서 오류 및 경고 로깅
<a name="udf-logging-messages"></a>

UDF에서 Python 로깅 모듈을 사용하여 사용자 정의 오류 및 경고 메시지를 생성할 수 있습니다. 쿼리를 실행한 후에는 [SVL\$1UDF\$1LOG](r_SVL_UDF_LOG.md) 시스템 뷰에 대한 쿼리를 실행하여 로그 메시지를 가져올 수도 있습니다.

**참고**  
UDF 로깅은 클러스터 리소스를 소비하기 때문에 시스템 성능에 영향을 미칠 수도 있습니다. 따라서 로깅은 개발 및 문제 해결 목적으로만 실행하는 것이 좋습니다.

쿼리를 실행하면 로그 핸들러가 해당하는 함수 이름, 노드 및 조각과 함께 메시지를 SVL\$1UDF\$1LOG 시스템 뷰에 작성합니다. 각 조각마다 메시지별로 SVL\$1UDF\$1LOG에 작성되는 행은 1개입니다. 메시지는 4096바이트로 잘립니다. UDF 로그는 조각당 500개 행으로 제한됩니다. 그래서 로그가 가득 차면 로그 핸들러가 더욱 오래된 메시지를 삭제하고 경고 메시지를 SVL\$1UDF\$1LOG에 추가합니다.

**참고**  
Amazon Redshift UDF 로그 핸들러는 줄 바꿈(`\n`), 파이프(`|`) 문자 및 백슬래시(`\`) 문자를 백슬래시(`\`) 문자로 이스케이프 처리합니다.

UDF 로그 레벨은 기본적으로 WARNING으로 설정됩니다. 로그 레벨이 WARNING, ERROR 및 CRITICAL인 메시지가 기록됩니다. 심각도가 INFO, DEBUG 및 NOTSET로 낮은 메시지는 무시됩니다. UDF 로그 레벨을 설정하려면 Python logger 메서드를 사용하십시오. 예를 들어 다음과 같은 메서드는 로그 레벨을 INFO로 설정됩니다.

```
logger.setLevel(logging.INFO)
```

Python 로깅 모듈의 사용에 대한 자세한 내용은 Python 설명서에서 [Logging facility for Python](https://docs.python.org/2.7/library/logging.html) 섹션을 참조하세요.

다음은 f\$1pyerror라는 이름의 함수를 생성한 다음 Python 로깅 모듈을 가져와서 로거를 인스턴스화하고 오류를 기록하는 예입니다.

```
CREATE OR REPLACE FUNCTION f_pyerror() 
RETURNS INTEGER
VOLATILE AS
$$
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info('Your info message here') 
return 0
$$ language plpythonu;
```

다음은 SVL\$1UDF\$1LOG에 대한 쿼리를 실행하여 이전 예에서 기록된 메시지를 확인하는 예입니다.

```
select funcname, node, slice, trim(message) as message 
from svl_udf_log;

  funcname  | query | node | slice |   message  
------------+-------+------+-------+------------------
  f_pyerror | 12345 |     1|     1 | Your info message here
```