本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Python 中記錄錯誤和警告 UDFs
您可以使用 Python 記錄模組,在 中建立使用者定義的錯誤和警告訊息UDFs。您可以在查詢執行之後,查詢 SVL_UDF_LOG 系統檢視來擷取日誌記錄的訊息。
注意
UDF 記錄會耗用叢集資源,並可能影響系統效能。我們建議只針對開發和故障診斷實作記錄。
在查詢執行期間,日誌處理常式會將訊息寫入 SVL_UDF_LOG 系統檢視,以及對應的函數名稱、節點和層。日誌處理常式會為每個切片將一列寫入每則訊息的 SVL_UDF_LOG。訊息會截斷至 4096 個位元組。UDF 日誌限制為每個切片 500 列。當日誌已滿時,日誌處理常式會捨棄舊訊息,並將警告訊息新增至 SVL_UDF_LOG。
注意
Amazon Redshift UDF日誌處理常式會逸出具有反斜線 \n
() 字元的新行 ( )、管道 |
( ) 字元和反斜線 \
( \
) 字元。
根據預設,UDF日誌層級會設定為 WARNING。CRITICAL 會記錄日誌層級為 WARNING、 ERROR和 的訊息。嚴重性較低的訊息 DEBUGINFO、 和 NOTSET會被忽略。若要設定UDF日誌層級,請使用 Python Logger 方法。例如,下列 會將日誌層級設定為 INFO。
logger.setLevel(logging.INFO)
如需使用 Python 記錄模組的相關資訊,請參閱 Python 文件中的 Python 的記錄機能
下列範例會建立名為 f_pyerror 的函數,用來匯入 Python 記錄模組、將記錄器執行個體化,以及記錄錯誤。
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