

 Amazon Redshift は、2026 年 6 月 30 日以降、Python UDF の使用をサポートしなくなります。これは段階的に実施されます。Python のサポート終了と移行オプションの詳細については、2025 年 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>

Python ロギングモジュールを使用して、ユーザー定義のエラーおよび警告メッセージを UDF 内に作成できます。クエリの実行に続いて、[SVL\_UDF\_LOG](r_SVL_UDF_LOG.md) システムビューをクエリしてログ記録されたメッセージを取得できます。

**注記**  
UDF のログ記録はクラスターのリソースを消費し、システムのパフォーマンスに影響する場合があります。ログ記録は開発およびトラブルシューティングのためにのみ実装することをお勧めします。

クエリの実行中に、ログハンドラは、対応する関数名、ノード、およびスライスとともに、SVL\_UDF\_LOG システムビューにメッセージを書き込みます。ログハンドラはメッセージごと、スライスごとに 1 行を SVL\_UDF\_LOG に書き込みます。メッセージは 4096 バイトで切り捨てられます。UDF のログはスライスごとに 500 行に制限されます。ログがいっぱいになると、ログハンドラは古い方からメッセージを破棄し、SVL\_UDF\_LOG に警告メッセージを追加します。

**注記**  
Amazon Redshift の UDF ログハンドラでは、改行 ( `\n` )、パイプ ( `|` ) 文字、バックスラッシュ ( `\` ) 文字を、バックスラッシュ ( `\` ) 文字でエスケープします。

デフォルトでは、UDF ログレベルは WARNING に設定されます。ログレベルが WARNING、ERROR、および CRITICAL のメッセージがログ記録されます。重要度がより低い INFO、DEBUG、および NOTSET のメッセージは無視されます。UDF のログレベルを設定するには、Python のロガーメソッドを使用します。次の例では、ログレベルを INFO に設定します。

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

Python ロギングモジュールの使用の詳細については、「[Python 用ロギング機能](https://docs.python.org/2.7/library/logging.html)」を参照してください。

次の例は、Python ロギングモジュールをインポートし、ロガーをインスタンス化してエラーを記録する f\_pyerror という関数を作成します。

```
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\_UDF\_LOG をクエリして前の例でログ記録されたメッセージを表示します。

```
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
```