

# RDS for PostgreSQL 数据库日志文件
<a name="USER_LogAccess.Concepts.PostgreSQL"></a>

您可以监控以下类型的 日志文件：
+ PostgreSQL 日志
+ 升级日志
+ IAM 数据库身份验证错误日志
**注意**  
要启用 IAM 数据库身份验证错误日志，您必须先为 RDS for PostgreSQL 数据库实例启用 IAM 数据库身份验证。有关启用 IAM 数据库身份验证的更多信息，请参阅[启用和禁用 IAM 数据库身份验证](UsingWithRDS.IAMDBAuth.Enabling.md)。

RDS for PostgreSQL 将数据库活动记录到原定设置 PostgreSQL 日志文件中。对于本地 PostgreSQL 数据库实例，这些消息本地存储在 `log/postgresql.log` 中。对于 RDS for PostgreSQL 数据库实例，日志文件可用于 Amazon RDS 实例上。也可以通过 Amazon Web Services 管理控制台访问这些日志，您可以在此处查看或下载它们。原定设置日志记录级别可捕获登录失败、严重服务器错误、死锁和查询失败。

有关如何查看、下载和监视基于文件的数据库日志的更多信息，请参阅 [监控 Amazon RDS 日志文件](USER_LogAccess.md)。要了解有关 PostgreSQL 日志的更多信息，请参阅 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 1](https://www.amazonaws.cn/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/) 和 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 2](https://www.amazonaws.cn/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-2/)。

除了本主题中讨论的标准 PostgreSQL 日志外，RDS for PostgreSQL 还支持 PostgreSQL Audit 扩展（`pgAudit`）。大多数受监管行业和政府机构需要保留对数据所做更改的审计日志或审计跟踪，以符合法律要求。有关安装和使用 pgAudit 的更多信息，请参阅 [使用 pgAudit 记录数据库活动](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)。

**Topics**
+ [RDS for PostgreSQL 中的日志记录参数](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md)
+ [为您的 RDS for PostgreSQL 数据库实例开启查询日志记录](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [将 PostgreSQL 日志发布到 Amazon CloudWatch Logs](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

## 将 PostgreSQL 日志发布到 Amazon CloudWatch Logs
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

要在高持久性存储中存储 PostgreSQL 日志记录，您可以使用 Amazon CloudWatch Logs。利用 CloudWatch Logs，您还可以对日志数据进行实时分析，并使用 CloudWatch 查看指标和创建警报。例如，如果您将 `log_statement` 设置为 `ddl`，则可以将告警设置为只要执行 DDL 语句就发出提示。在创建 RDS for PostgreSQL 数据库实例的过程中，您可以选择让 PostgreSQL 日志上载到 CloudWatch Logs。如果您当时选择不上载日志，可以稍后修改您的实例，以便从那时起开始上载日志。换句话说，不会上载现有日志。只有在修改后的 RDS for PostgreSQL 数据库实例上创建了新日志时，才上载这些新日志。

所有目前可用的 RDS for PostgreSQL 版本都支持将日志文件发布到 CloudWatch Logs。有关更多信息，请参阅《Amazon RDS for PostgreSQL 版本注释》**中的 [Amazon RDS for PostgreSQL 更新](https://docs.amazonaws.cn/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)。

要使用 CloudWatch Logs，请为 PostgreSQL 数据库实例配置 RDS 以将日志数据发布到日志组。

您可以将以下日志类型发布到 CloudWatch Logs for RDS for PostgreSQL：
+ PostgreSQL 日志
+ 升级日志 
+ IAM 数据库身份验证错误日志

在完成配置后，Amazon RDS 将日志事件发布到 CloudWatch 日志组内的日志流。例如，PostgreSQL 日志数据存储在日志组 `/aws/rds/instance/my_instance/postgresql` 中。要查看您的日志，请在 [https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/) 处打开 CloudWatch 控制台。

### 控制台
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CON"></a>

**使用控制台将 PostgreSQL 日志发布到 CloudWatch Logs**

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要修改的数据库实例，然后选择 **Modify (修改)**。

1. 在 **Log exports (日志导出)** 部分中，选择要开始发布到 CloudWatch Logs 的日志。

   **Log exports (日志导出)** 部分仅适用于支持发布到 CloudWatch Logs 的 PostgreSQL 版本。

1. 选择**继续**，然后选择摘要页面上的**修改数据库实例**。

### Amazon CLI
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CLI"></a>

您可以使用 Amazon CLI 来发布 PostgreSQL 日志。您可以调用带以下参数的 [https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-instance.html](https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-instance.html) 命令。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注意**  
对 `--cloudwatch-logs-export-configuration` 选项进行的更改始终立即应用于数据库实例。因此，`--apply-immediately` 和 `--no-apply-immediately` 选项没有影响。

您还可以通过调用以下 CLI 命令来发布 PostgreSQL 日志：
+ [https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

通过以下选项运行上述 CLI 命令之一：
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

根据您运行的 CLI 命令，可能需要其他选项。

**Example 修改实例以将日志发布到 CloudWatch Logs**  
以下示例修改现有的 PostgreSQL 数据库实例以将日志文件发布到 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值是 JSON 对象。此对象的键是 `EnableLogTypes`，其值是具有 `postgresql` 和 `upgrade` 的任意组合的字符串的数组。  
对于 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'
```
对于：Windows  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
```

**Example 创建实例以将日志发布到 CloudWatch Logs**  
以下示例将创建一个 PostgreSQL 数据库实例并将日志文件发布到 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值是 JSON 字符串数组。这些字符串可以是 `postgresql` 和 `upgrade` 的任意组合。  
对于 Linux、macOS 或 Unix：  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \
4.     --db-instance-class db.m4.large \
5.     --engine postgres
```
对于：Windows  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine postgres
```

### RDS API
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.API"></a>

您可以使用 RDS API 来发布 PostgreSQL 日志。您可以使用以下参数调用 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作：
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**注意**  
对 `CloudwatchLogsExportConfiguration` 参数进行的更改始终立即应用于数据库实例。因此，`ApplyImmediately` 参数没有影响。

您还可以通过调用以下 RDS API 操作来发布 PostgreSQL 日志：
+ [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

使用以下参数运行这些 RDS API 操作之一：
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

根据您运行的操作，可能需要其他参数。

 