用於在 RDS for PostgreSQL 中進行記錄的參數 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

用於在 RDS for PostgreSQL 中進行記錄的參數

您可以修改各種參數,為 RDS for PostgreSQL 資料庫執行個體自訂記錄行為。在下表中,您可以找到影響日誌檔存放時間、何時輪換日誌,以及是否以 CSV (逗號分隔值) 格式輸出日誌。您也可以找到已傳送至 STDERR 的文字輸出,以及其他設定。若要變更可修改之參數的設定,請將自訂資料庫參數群組用於 。RDS for PostgreSQL 執行個體。如需詳細資訊,請參閱 Amazon RDS 資料庫執行個體的資料庫參數群組

參數 預設 描述

log_destination

stderr

設定日誌的輸出格式。預設值是 stderr,但您也可以將 csvlog 新增至設定來指定逗號分隔值 (CSV)。如需詳細資訊,請參閱 設定日誌目標 (stderr、csvlog)

log_filename

postgresql.log.%Y-%m-%d-%H

指定日誌檔名稱的模式。除了預設值之外,此參數還支援檔案名稱模式的 postgresql.log.%Y-%m-%dpostgresql.log.%Y-%m-%d-%H%M

log_line_prefix

%t:%r:%u@%d:[%p]:

定義寫入至 stderr 的每個日誌行的字首,以記錄時間 (%t)、遠端主機 (%r)、使用者 (%u)、資料庫 (%d) 和程序 ID (%p)。

log_rotation_age

60

日誌檔會多少分鐘後自動轉換。您可以在 1 到 1440 分鐘的範圍內變更此值。如需詳細資訊,請參閱 設定日誌檔案輪換

log_rotation_size

日誌檔自動轉換的大小 (kB)。根據預設,不會使用此參數,因為日誌會根據 log_rotation_age 參數進行輪換。如需詳細資訊,請參閱 設定日誌檔案輪換

rds.log_retention_period

4320

早於指定分鐘數的 PostgreSQL 日誌將遭到刪除。預設值 4320 分鐘將在 3 天後刪除日誌檔案。如需詳細資訊,請參閱 設定日誌保留期間

如要識別應用程式問題,您可在日誌中尋找查詢失敗、登入失敗、鎖死和致命的伺服器錯誤。例如,假設您已將舊版應用程式從 Oracle 轉換為 Amazon RDS PostgreSQL,但並非所有查詢都已正確轉換。這些格式不正確的查詢會產生您可在日誌中尋找的錯誤訊息,以協助識別問題。如需記錄查詢的詳細資訊,請參閱 針對您的 RDS for PostgreSQL 資料庫執行個體開啟查詢記錄

在下列主題中,您可以找到如何設定各種參數的相關資訊,這些參數控制 PostgreSQL 日誌的基本詳細資訊。

設定日誌保留期間

rds.log_retention_period 參數指定 RDS for PostgreSQL 資料庫執行個體保留其日誌檔的時間長度。預設設定為 3 天 (4,320 分鐘),但您可以將此值設為 1 天 (1,440 分鐘) 至 7 天 (10,080 分鐘)。請確定您的 RDS for PostgreSQL 資料庫執行個體具有足夠的儲存空間來保留日誌檔一段時間。

我們建議您定期將日誌發佈至 Amazon CloudWatch Logs 中,如此,您便可在日誌從 中移除後的很長時間內檢視並分析系統資料。RDS for PostgreSQL 資料庫執行個體。如需詳細資訊,請參閱 將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs

設定日誌檔案輪換

依預設,Amazon RDS 每小時都會建立新的日誌檔。時間由 log_rotation_age 參數控制。此參數的預設值為 60 (分鐘),但您可以將其設為從 1 分鐘至 24 小時 (1,440 分鐘) 的任何時間。在輪換時,會建立一個新的不同日誌檔案。該檔案的命名是依據 log_filename 參數所指定的模式。

日誌檔案也可依其大小進行旋轉,如 log_rotation_size 參數中所指定。此參數指定當日誌達到指定大小 (以 KB 為單位) 時應輪換日誌。若為 RDS for PostgreSQL 資料庫執行個體,log_rotation_size 未設定,即並未指定任何值。不過,您可以設定從 0-2097151 KB 的參數。

日誌檔案名稱會以 log_filename 參數中指定的檔案名稱模式為基礎。此參數的可用設定如下所示:

  • postgresql.log.%Y-%m-%d – 日誌檔名稱的預設格式。在日誌檔的名稱中包含年、月和日期。

  • postgresql.log.%Y-%m-%d-%H – 在日誌檔名稱格式中包括小時。

如需詳細資訊,請參閱 PostgreSQL 文件中的 log_rotation_agelog_rotation_size

設定日誌目標 (stderrcsvlog)

預設情況下,Amazon RDS PostgreSQL 生成標準錯誤 (stderr) 格式的日誌。此格式為 log_destination 參數的預設設定。每則訊息都會使用 log_line_prefix 參數中指定的模式作為字首。如需詳細資訊,請參閱 了解 log_line_prefix 參數

RDS for PostgreSQL 也會以 csvlog 格式產生日誌檔。將日誌資料當作逗號分隔值 (CSV) 進行分析時,csvlog 很有用。例如,假設您使用 log_fdw 延伸模組,將日誌作為外部資料表處理。在 stderr 日誌檔案上建立的外部資料表包含一個具日誌事件資料的單一欄。透過將 csvlog 新增至 log_destination 參數,您可以取得 CSV 格式的日誌檔,其中包含外部資料表的多個資料欄的分界。您現在可以更輕鬆地排序和分析日誌。如要進一步了解如何使用 log_fdwcsvlog,請參閱 使用 log_fdw 擴充功能存取使用 SQL 的資料庫日誌

如果您為此參數指定 csvlog,請注意會同時產生 stderrcsvlog 檔案。請務必監控日誌所使用的儲存體,同時考慮 rds.log_retention_period 及影響日誌儲存體和更換的其他設定。使用 stderrcsvlog 會使日誌所使用的儲存體空間增加一倍以上。

如果您將 csvlog 新增至 log_destination,並且想要單獨還原為 stderr,則需要重設參數。若要這麼做,請開啟 Amazon RDS 主控台,然後您的執行個體開啟自訂資料庫參數群組。選擇 log_destination 參數、選擇 Edit parameter (編輯參數],然後選擇 Reset (重設)。

如需有關設定日誌記錄的詳細資訊,請參閱使用 Amazon RDS 和 Aurora PostgreSQL 日誌:第 1 部分

了解 log_line_prefix 參數

stderr 日誌格式會將 log_line_prefix 參數指定的詳細資訊作為每個日誌訊息的字首。預設值為:

%t:%r:%u@%d:[%p]:t

從 Aurora PostgreSQL 第 16 版開始,您也可以選擇:

%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a

每個傳送至 stderr 的日誌項目都包含根據所選取值的下列資訊:

  • %t – 不到毫秒的日誌項目時間

  • %m – 毫秒的日誌項目時間

  • %r – 遠端主機地址

  • %u@%d – 使用者名稱 @ 資料庫名稱

  • [%p] – 程序 ID (若可用)

  • %l – 每個工作階段的日誌行號

  • %e – SQL 錯誤代碼

  • %s – 程序開始時間戳記

  • %v – 虛擬交易 ID

  • %x – 交易 ID

  • %c – 工作階段 ID

  • %q – 非工作階段結束字元

  • %a – 應用程式名稱