

 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/). 

# SVL\_UDF\_LOG
<a name="r_SVL_UDF_LOG"></a>

 Registra mensagens de erro e aviso definidas pelo sistema geradas durante a execução da função definida pelo usuário (UDF). 

SVL\_UDF\_LOG permanece visível para todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para obter mais informações, consulte [Visibilidade de dados em tabelas e visualizações de sistema](cm_chap_system-tables.md#c_visibility-of-data). 

Alguns ou todos os dados nessa tabela também podem ser encontrados na exibição de monitoramento SYS [SYS\_UDF\_LOG](SYS_UDF_LOG.md). Os dados na exibição de monitoramento SYS são formatados para serem mais fáceis de usar e compreender. É recomendável usar a exibição de monitoramento SYS nas consultas.

## Colunas da tabela
<a name="SVL_UDF_LOG-table-columns"></a>


| Nome da coluna  | Tipo de dados  | Descrição  | 
| --- | --- | --- | 
| consultar | bigint | O ID da consulta. Este ID pode ser usado para unir várias outras tabelas e exibições do sistema. | 
| message | char(4096) | A mensagem gerada pela função. | 
| created | timestamp | O horário em que o log foi criado. | 
| traceback | char(4096) | Se estiver disponível, esse valor fornece um rastreamento de pilha para a UDF. Para obter mais informações, consulte [traceback](https://docs.python.org/2/library/traceback.html) na Python Standard Library.  | 
| funcname  | character(256) | O nome da UDF que está em execução. | 
| nó  | integer | O nó onde a mensagem foi gerada. | 
| slice | integer | A fatia onde a mensagem foi gerada. | 
| seq | integer | A sequência das mensagens na fatia. | 

## Consultas de exemplo
<a name="SVL_UDF_LOG-sample-queries"></a>

O exemplo a seguir mostra como as UDFs tratam os erros definidos pelo sistema. O primeiro bloco mostra a definição de uma função de UDF que retorna o inverso de um argumento. Quando você executa a função e fornece um argumento de valor 0, como mostra o segundo bloco, a função retorna um erro. A terceira instrução lê a mensagem de erro que é registrada em SVL\_UDF\_LOG

```
-- Create a function to find the inverse of a number

CREATE OR REPLACE FUNCTION  f_udf_inv(a int)
  RETURNS float IMMUTABLE
AS $$
   return 1/a
$$ LANGUAGE plpythonu;

-- Run the function with a 0 argument to create an error
Select f_udf_inv(0) from sales;

-- Query SVL_UDF_LOG to view the message

Select query, created, message::varchar
from svl_udf_log;

 query |          created           | message                             
-------+----------------------------+---------------------------------------------------------
  2211 | 2015-08-22 00:11:12.04819  | ZeroDivisionError: long division or modulo by zero\nNone
```

O exemplo a seguir adiciona o registro em log e uma mensagem de aviso à UDF para que operações de divisão por zero gerem uma mensagem de aviso em vez de interromper o processamento com uma mensagem de erro. 

```
-- Create a function to find the inverse of a number and log a warning

CREATE OR REPLACE FUNCTION f_udf_inv_log(a int)
  RETURNS float IMMUTABLE
 AS $$ 
  import logging
  logger = logging.getLogger() #get root logger
  if a==0:
    logger.warning('You attempted to divide by zero.\nReturning zero instead of error.\n') 
    return 0
  else:
     return 1/a
$$ LANGUAGE plpythonu;
```

O exemplo a seguir executa a função e, em seguida, consulta a exibição SVL\_UDF\_LOG para ver a mensagem.

```
-- Run the function with a 0 argument to trigger the warning
Select f_udf_inv_log(0) from sales;

-- Query SVL_UDF_LOG to view the message

Select query, created, message::varchar
from svl_udf_log;

query |          created           | message                             
------+----------------------------+----------------------------------
    0 | 2015-08-22 00:11:12.04819  | You attempted to divide by zero. 
                                     Returning zero instead of error.
```