Registrazione di errori e avvisi in Python UDFs - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione di errori e avvisi in Python UDFs

Puoi usare il modulo di registrazione Python per creare messaggi di errore e avviso definiti dall'utente nel tuo. UDFs In seguito all'esecuzione della query, puoi eseguire una query sulla vista di sistema SVL_UDF_LOG per recuperare i messaggi registrati.

Nota

UDFla registrazione consuma risorse del cluster e potrebbe influire sulle prestazioni del sistema. Ti consigliamo di implementare il logging solo per scopi di sviluppo e risoluzione dei problemi.

Durante l'esecuzione delle query, il gestore di log scrive i messaggi nella vista di LOG sistema SVL _ UDF _, insieme al nome della funzione, al nodo e alla slice corrispondenti. Il gestore di log scrive una riga su SVL _ UDF _ LOG per messaggio, per slice. I messaggi vengono troncati a 4096 byte. Il UDF registro è limitato a 500 righe per slice. Quando il registro è pieno, il gestore del registro elimina i messaggi più vecchi e aggiunge un messaggio di avviso a SVL _ _. UDF LOG

Nota

Il gestore di UDF log di Amazon Redshift sostituisce i caratteri newlines (\n), pipe () e backslash (|) con un carattere backslash (\). \

Per impostazione predefinita, il livello di log è impostato su. UDF WARNING I messaggi con un livello di registro pari a WARNINGERROR, e CRITICAL vengono registrati. I messaggi con un livello di gravità INFO inferiore e NOTSET vengono ignorati. DEBUG Per impostare il livello di UDF registro, usa il metodo Python logger. Ad esempio, quanto segue imposta il livello di registro su. INFO

logger.setLevel(logging.INFO)

Per ulteriori informazioni sull'uso del modulo di logging Python, consultare la pagina relativa all'utilità di logging per Python nella documentazione di Python.

L'esempio seguente crea una funzione denominata f_pyerror che importa il modulo di logging Python, crea un'istanza del logger e registra un errore.

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;

L'esempio seguente interroga SVL _ UDF _ LOG per visualizzare il messaggio registrato nell'esempio precedente.

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