

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Registro de errores y advertencias en las UDF de Python
<a name="udf-logging-messages"></a>

Puede usar el módulo de registro de Python para crear mensajes de error y advertencia definidos por el usuario en sus User-Defined Scalar Function (UDF, Función escalar definida por el usuario). Después de la ejecución de una consulta, puede consultar la vista de sistema [SVL\$1UDF\$1LOG](r_SVL_UDF_LOG.md) para recuperar mensajes registrados.

**nota**  
El registro de UDF consume recursos del clúster y podría afectar el rendimiento del sistema. Le recomendamos que implemente el registro solo con fines de desarrollo y resolución de problemas. 

Durante la ejecución de consultas, el gestor de registros escribe mensajes a la vista de sistema SVL\$1UDF\$1LOG, junto con la función, nombre, nodo y sector correspondientes. El gestor de registros escribe una fila en SVL\$1UDF\$1LOG por mensaje, por sector. Los mensajes se truncan en 4 096 bytes. El registro de UDF se limita a 500 filas por sector. Cuando el registro se llena, el gestor descarta los mensajes más viejos y agrega un mensaje de advertencia a SVL\$1UDF\$1LOG.

**nota**  
El gestor de registros de las UDF de Amazon Redshift introduce los escapes de las líneas nuevas (`\n`), las barras verticales (`|`) y las barras inversas (`\`) con una barra inversa (`\`).

De manera predeterminada, el nivel registro de la UDF se establece en WARNING. Los mensajes con un nivel registro WARNING, ERROR y CRITICAL se registran. Los mensajes de menor gravedad, INFO, DEBUG y NOTSET, se ignoran. Para establecer el nivel registro de la UDF, use el método de registro en Python. Por ejemplo, lo siguiente establece el nivel registro en INFO.

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

Para obtener más información acerca del uso del módulo de registro en Python, consulte [Logging facility for Python](https://docs.python.org/2.7/library/logging.html) en la documentación de Python.

En el siguiente ejemplo, se crea una función denominada f\$1pyerror que importa el módulo de registro en Python, crea una instancia de registro y registra un error.

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

En el siguiente ejemplo, se consulta el SVL\$1UDF\$1LOG para ver el mensaje registrado en el ejemplo 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
```