

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Registro em log de erros e alertas em UDFs do Python
<a name="udf-logging-messages"></a>

Você pode usar o módulo de log Python para criar mensagens de erro e alerta definidas pelo usuário em suas UDFs. Depois da execução da consulta, você poderá consultar a exibição do sistema [SVL\$1UDF\$1LOG](r_SVL_UDF_LOG.md) para recuperar mensagens registradas.

**nota**  
O log de UDF consome recursos do cluster e pode afetar a performance do sistema. Recomendamos a implementação de log somente para desenvolvimento e solução de problemas. 

Durante a execução da consulta, o handler do log grava mensagens na exibição de sistema de SVL\$1UDF\$1LOG, assim como o nome da função, nó e fatia correspondentes. O handler do log grava uma linha no SVL\$1UDF\$1LOG por mensagem e por fatia. As mensagens são truncadas para 4.096 bytes. O log da UDF é limitado a 500 linhas por fatia. Quando o log fica cheio, o handler do log descarta as mensagens mais antigas e adiciona uma mensagem de alerta em SVL\$1UDF\$1LOG.

**nota**  
O manipulador de log UDF do Amazon Redshift escapa caracteres de nova linha (`\n` ), barra vertical (`|`) e barra invertida (`\`) com um caractere barra invertida (`\`).

Por padrão, o nível de log de UDF é definido como WARNING. As mensagens com um nível de log WARNING, ERROR e CRITICAL são registradas. As mensagens com problemas de segurança INFO, DEBUG e NOTSET são ignoradas. Ao definir o nível de log de UDF, use o método do registrador Python. Por exemplo, defina o nível de log como INFO da forma a seguir.

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

Para mais informações sobre como usar o módulo de registro Python, consulte [Instalação de registro para Python](https://docs.python.org/2.7/library/logging.html) na documentação Python.

O exemplo a seguir cria uma função chamada f\$1pyerror que importa o módulo de log Python, instancia o registrador e registra um erro.

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

O exemplo a seguir consulta SVL\$1UDF\$1LOG para visualizar a mensagem registrada no exemplo anterior.

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