

# 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 实例上。也可以通过 AWS 管理控制台访问这些日志，您可以在此处查看或下载它们。原定设置日志记录级别可捕获登录失败、严重服务器错误、死锁和查询失败。

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

# RDS for PostgreSQL 中的日志记录参数
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

您可以通过修改各种参数来自定义 RDS for PostgreSQL 数据库实例的日志记录行为。在下表中，您可以找到影响日志存储时间长度、何时轮换日志和是否以 CSV（逗号分隔值）格式输出日志的参数。您还可以找到发送到 STDERR 的文本输出以及其他设置。要更改可修改的参数的设置，请为以下项目使用自定义数据库参数组： RDS for PostgreSQL 实例。有关更多信息，请参阅。[Amazon RDS 数据库实例的数据库参数组](USER_WorkingWithDBInstanceParamGroups.md)


| 参数 | 默认值 | 说明 | 
| --- | --- | --- | 
| log\$1destination | stderr | 设置日志的输出格式。原定设置为 `stderr`，但您也可以通过向设置中添加 `csvlog` 来指定逗号分隔值（CSV）。有关更多信息，请参阅 [设置日志目标（`stderr`、`csvlog`）](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)。 | 
| log\$1filename |  postgresql.log.%Y-%m-%d-%H  | 指定日志文件名的模式。除原定设置外，此参数还支持使用 `postgresql.log.%Y-%m-%d` 和 `postgresql.log.%Y-%m-%d-%H%M` 作为文件名模式。 | 
| log\$1line\$1prefix | %t:%r:%u@%d:[%p]: | 为写入 `stderr` 的每个日志行定义前缀，以记录时间（%t）、远程主机（%r）、用户（%u）、数据库（%d）和进程 ID（%p）。 | 
| log\$1rotation\$1age | 60 | 此分钟数后，将自动轮换日志文件。您可以在 1 到 1440 分钟的范围内更改此值。有关更多信息，请参阅[设置日志文件轮换](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)。 | 
| log\$1rotation\$1size | – | 日志自动轮换的大小（kB）。原定设置情况下，不使用此参数，因为日志是根据 `log_rotation_age` 参数轮换的。要了解更多信息，请参阅[设置日志文件轮换](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)。 | 
| rds.log\$1retention\$1period | 4320 | 超过指定分钟数的 PostgreSQL 日志将被删除。默认值为 4320 分钟，表示系统将在 3 天后删除日志文件。有关更多信息，请参阅 [设置日志保留期](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)。 | 

要识别应用程序问题，您可以在日志中查找查询失败、登录失败、死锁和致命的服务器错误。例如，假设您将旧版应用程序从 Oracle 转换为 Amazon RDS PostgreSQL，但部分查询可能未正确转换。这些格式不正确的查询会生成错误消息，您可以在日志中找到这些错误消息以帮助识别问题。有关日志记录查询的更多信息，请参阅 [为您的 RDS for PostgreSQL 数据库实例开启查询日志记录](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)。

在以下主题中，您可以找到有关如何设置各种参数（用于控制 PostgreSQL 日志的基本详细信息）的信息。

**Topics**
+ [设置日志保留期](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)
+ [设置日志文件轮换](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)
+ [设置日志目标（`stderr`、`csvlog`）](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)
+ [了解 log\$1line\$1prefix 参数](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)

## 设置日志保留期
<a name="USER_LogAccess.Concepts.PostgreSQL.log_retention_period"></a>

`rds.log_retention_period` 参数指定 RDS for PostgreSQL 数据库实例将其日志文件保留多长时间。原定设置为 3 天（4320 分钟），但您可以将此值设置为 1 天（1440 分钟）到 7 天（10080 分钟）之间的任意值。确保您的 RDS for PostgreSQL 数据库实例具有足够的存储空间，可将日志文件保留一段时间。

建议您将日志定期发布到 Amazon CloudWatch Logs，以便您可以在日志从 RDS for PostgreSQL 数据库实例中删除很久之后查看和分析系统数据。有关更多信息，请参阅 [将 PostgreSQL 日志发布到 Amazon CloudWatch Logs](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)。

## 设置日志文件轮换
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

原定设置情况下，Amazon RDS 每小时都会创建新的日志文件。计时由 `log_rotation_age` 参数控制。此参数的原定设置值为 60（分钟），但您可以将其设置为 1 分钟到 24 小时（1440 分钟）之间的任意值。轮换时，系统将创建一个新的不同日志文件。该文件根据 `log_filename` 参数指定的模式命名。

也可以根据日志文件的大小进行轮换（如 `log_rotation_size` 参数指定）。此参数指定在日志达到指定的大小（以千字节为单位）时应轮换日志。对于 RDS for PostgreSQL 数据库实例，`log_rotation_size` 未设置，也就是说，未指定任何值。但是，您可以将该参数设置为 0-2097151KB（千字节）之间。

日志文件名基于在 `log_filename` 参数中指定的文件名模式。此参数的可用设置如下：
+ `postgresql.log.%Y-%m-%d` – 日志文件名的原定设置格式。在日志文件的名称中包括年、月和日。
+ `postgresql.log.%Y-%m-%d-%H` – 在日志文件名格式中包含小时。

有关更多信息，请参阅 PostgreSQL 文档中的 [https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE) 和 [https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE)。

## 设置日志目标（`stderr`、`csvlog`）
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format"></a>

默认情况下，Amazon RDS PostgreSQL 以标准错误 (stderr) 格式生成日志。此格式是 `log_destination` 参数的原定设置。每条消息都使用在 `log_line_prefix` 参数中指定的模式作为前缀。有关更多信息，请参阅 [了解 log\$1line\$1prefix 参数](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)。

RDS for PostgreSQL 也可以按 `csvlog` 格式生成日志。`csvlog` 用于将日志数据作为逗号分隔值（CSV）数据进行分析。例如，假设您使用 `log_fdw` 扩展将日志作为外部表处理。在 `stderr` 日志文件上创建的外部表包含一个列，其中包含日志事件数据。通过向 `csvlog` 参数添加 `log_destination`，可以获得 CSV 格式的日志文件，其中对外部表的多个列进行了分界。您现在可以更轻松地对日志进行排序和分析。要了解如何将 `log_fdw` 与 `csvlog` 结合使用，请参阅 [使用 log\$1fdw 扩展通过 SQL 访问数据库日志](CHAP_PostgreSQL.Extensions.log_fdw.md)。

如果您为此参数指定 `csvlog`，请注意将同时生成 `stderr` 和 `csvlog` 文件。确保监控日志所占用的存储空间，同时考虑 `rds.log_retention_period` 以及影响日志存储和周转的其他设置。使用 `stderr` 和 `csvlog` 会使日志占用的存储空间增加一倍以上。

如果将 `csvlog` 添加到 `log_destination` 并想单独恢复到 `stderr`，则需要重置参数。为此，请打开 Amazon RDS 控制台，然后为您的实例打开自定义数据库参数组。选择 `log_destination` 参数，选择 **Edit parameter**（编辑参数），然后选择 **Reset**（重置）。

有关配置日志记录的更多信息，请参阅[使用 Amazon RDS 和 Aurora PostgreSQL 日志：第 1 部分](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)。

## 了解 log\$1line\$1prefix 参数
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix"></a>

`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`：应用程序名称 

# 为您的 RDS for PostgreSQL 数据库实例开启查询日志记录
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

通过设置下表中列出的一些参数，您可以收集有关数据库活动的更多详细信息，包括查询、等待锁定的查询、检查点和许多其他详细信息。本主题重点介绍日志记录查询。


| 参数 | 默认值 | 说明 | 
| --- | --- | --- | 
| log\$1connections | – | 记录每个成功的连接。 | 
| log\$1disconnections | – | 记录每个会话的结束及其持续时间。 | 
| log\$1checkpoints | 1 | 记录每个检查点。 | 
| log\$1lock\$1waits | – | 记录长锁定等待次数。默认情况下，不设置此参数。 | 
| log\$1min\$1duration\$1sample | – | 设置如超出则记录语句示例的最短执行时间（ms）。示例数量使用 log\$1statement\$1sample\$1rate 参数进行设置。 | 
| log\$1min\$1duration\$1statement | – | 任何至少运行指定时间或更长时间的 SQL 语句都会被记录下来。默认情况下，不设置此参数。开启该参数可帮助查找未优化的查询。 | 
| log\$1statement | – | 设置所记录的语句类型。默认情况下，未设置此参数，但您可以将其更改为 `all`、`ddl` 或 `mod`，以指定要记录的 SQL 语句的类型。如果您为此参数指定了与 `none` 不同的任何值，还应采取其他措施来防止日志文件中的密码泄露。有关更多信息，请参阅 [降低使用查询日志记录时泄露密码的风险降低密码泄露风险](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)。 | 
| log\$1statement\$1sample\$1rate | – | 超过在 `log_min_duration_sample` 中指定的时间的语句百分比，以介于 0.0 和 1.0 之间的浮点值表示。 | 
| log\$1statement\$1stats | – | 向服务器日志写入累计性能统计数据。 | 

## 使用日志记录查找执行缓慢的查询
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.using"></a>

您可以记录 SQL 语句和查询，以帮助查找执行缓慢的查询。您可以通过修改本节中概述的 `log_statement` 和 `log_min_duration` 参数的设置来开启此功能。在为 RDS for PostgreSQL 数据库实例开启查询日志记录之前，您应该了解日志中可能存在的密码泄露以及如何降低风险。有关更多信息，请参阅 [降低使用查询日志记录时泄露密码的风险降低密码泄露风险](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)。

接下来，您可以了解有关 `log_statement` 和 `log_min_duration` 参数的参考信息。log\$1statement

此参数指定应发送到日志的 SQL 语句的类型。默认值为 `none`。如果您将此参数更改为 `all`、`ddl` 或 `mod`，请务必采取建议的操作来降低在日志中泄露密码的风险。有关更多信息，请参阅 [降低使用查询日志记录时泄露密码的风险降低密码泄露风险](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)。

**全部**  
记录所有语句。建议将此设置用于调试目的。

**ddl**  
记录所有数据定义语言（DDL）语句，例如 CREATE、ALTER、DROP 等。

**mod**  
记录所有可修改数据的 DDL 语句和数据操作语言（DML）语句，例如 INSERT、UPDATE 和 DELETE。

**none**  
不记录任何 SQL 语句。我们建议使用此设置，以避免在日志中泄露密码的风险。log\$1min\$1duration\$1statement

任何至少运行指定时间或更长时间的 SQL 语句都会被记录下来。默认情况下，不设置此参数。开启该参数可帮助查找未优化的查询。

**–1–2147483647**  
如超过即记录语句的运行时间的毫秒数（ms）。

**设置查询日志记录**

这些步骤假设您的 RDS for PostgreSQL 数据库实例使用自定义数据库参数组。

1. 将 `log_statement` 参数设置为 `all`。以下示例显示了使用此参数设置写入 `postgresql.log` 文件的信息。

   ```
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats:
   ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed
   ! [0.025146 s user, 0.000000 s system total]
   ! 36644 kB max resident size
   ! 0/8 [0/8] filesystem blocks in/out
   ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps
   ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent
   ! 19/0 [27/0] voluntary/involuntary context switches
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC;
   ----------------------- END OF LOG ----------------------
   ```

1. 设置 `log_min_duration_statement` 参数。以下示例显示了参数设置为 `postgresql.log` 时写入 `1` 文件的信息。

   将记录超过在 `log_min_duration_statement` 参数中指定的持续时间的查询。下面是一个示例。您可以在 Amazon RDS 控制台中查看 RDS for PostgreSQL 数据库实例的日志文件。

   ```
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments;
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms
   2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time
   2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB
   ----------------------- END OF LOG ----------------------
   ```

### 降低使用查询日志记录时泄露密码的风险
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk"></a>

我们建议您将 `log_statement` 保持设置为 `none`，以避免泄露密码。如果您将 `log_statement` 设置为 `all`、`ddl` 或 `mod`，我们建议您采取以下一个或多个步骤。
+ 对于客户端，加密敏感信息。有关更多信息，请参阅 PostgreSQL 文档中的[加密选项](https://www.postgresql.org/docs/current/encryption-options.html)。使用 `ENCRYPTED` 和 `UNENCRYPTED` 语句的 `CREATE`（和 `ALTER`）选项。有关更多信息，请参阅 PostgreSQL 文档中的 [CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html)。
+ 对于您的 RDS for PostgreSQL 数据库实例，请设置并使用 PostgreSQL Auditing（pgAudit）扩展。此扩展编辑发送到日志的 CREATE 和 ALTER 语句中的敏感信息。有关更多信息，请参阅 [使用 pgAudit 记录数据库活动](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)。
+ 限制对 CloudWatch Logs 的访问。
+ 使用更强的身份验证机制，如 IAM。

## 将 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.aws.amazon.com/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.aws.amazon.com/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.aws.amazon.com/rds/)。

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

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

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

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

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

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

您可以使用 AWS CLI 来发布 PostgreSQL 日志。您可以调用带以下参数的 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/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.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/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.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作：
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

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

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

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

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

 