

# RDS for PostgreSQL でのログ記録のパラメータ
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

さまざまなパラメータを変更することで、 RDS for PostgreSQL DB インスタンスのロギング動作をカスタマイズできます。次のテーブルには、ログの保存期間、ログをローテーションするタイミング、ログを CSV (カンマ区切り値) 形式で出力するかどうかなどに影響するパラメータがあります。他の設定の中でも、STDERR に送信されたテキスト出力を確認できます。変更可能なパラメータの設定を変更するには、のカスタム DB パラメータグループを使用します。RDS for PostgreSQL インスタンス。詳細については、「[Amazon RDS DB インスタンスの DB パラメータグループ](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]: | 時間 (%t)、リモート ホスト (%r)、ユーザー (%u)、データベース (%d)、およびプロセス ID (%p) を記録するために、`stderr` に書き込まれる各ログ行のプレフィックスを定義します。 | 
| log\$1rotation\$1age | 60 | ログファイルが自動的にローテーションされるまでの分数。この値は、1～1,440 分の間で変更できます。詳細については、「[ログファイルのローテーションの設定](#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 ログは削除されます。デフォルト値の 4,320 分では、3 日後にログファイルが削除されます。詳細については、「[ログの保持期間の設定](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)」を参照してください。 | 

アプリケーションの問題を特定するには、ログでクエリの失敗、ログインの失敗、デッドロック、および致命的なサーバーエラーを探すことができます。例えば、従来のアプリケーションを Oracle から Amazon RDS PostgreSQL に変換したが、一部のクエリは正しく変換されなかったとします。これらの誤った形式のクエリは、ログにエラーメッセージを生成し、ログから問題を特定することができます。クエリログの詳細については、「[ RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする](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 DB インスタンスがログファイルを保持する期間を指定します。デフォルトの設定は 3 日 (4,320 分) ですが、この値を 1 日 (1,440 分) から 7 日 (10,080 分) までの任意の時間に設定できます。 RDS for PostgreSQL DB インスタンスに、一定期間ログファイルを保持するのに十分なストレージがあることを確認してください。

ログを定期的に Amazon CloudWatch Logs に公開することをお勧めします。これにより、ログが から削除された後も、システムデータを表示して分析できます。RDS for PostgreSQL DB インスタンス。詳細については、「[Amazon CloudWatch Logs への PostgreSQL ログの発行](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)」を参照してください。

## ログファイルのローテーションの設定
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

 Amazon RDS は、デフォルトで 1 時間ごとに新しいログファイルを作成します。このタイミングは、`log_rotation_age` パラメータによって制御されます。このパラメータのデフォルト値は 60 (分) ですが、1 分から 24 時間 (1,440 分) までの任意の時間に設定できます。ローテーションの時期になると、新しい個別のログファイルが作成されます。ファイルには、`log_filename` パラメータによって指定されたパターンに従って名前が付けられます。

ログファイルは、`log_rotation_size` パラメータで指定されたサイズに従ってローテーションすることもできます。このパラメータは、ログが指定されたサイズ (キロバイト単位) に達したときにローテーションされるように指定します。RDS for PostgreSQL DB インスタンスの場合、`log_rotation_size` は未設定です。つまり、値が指定されていません。ただし、このパラメータは 0～2,097,151 KB (キロバイト) の範囲で設定できます。

ログファイル名は、`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` ログファイルについて作成された外部テーブルには、ログイベントデータを含む 1 つの列が含まれます。`log_destination` パラメータに `csvlog` を追加すると、外部テーブルの複数の列の区切りを含む CSV 形式のログファイルが取得できます。ログをより簡単に分類して分析できるようになりました。`log_fdw` を `csvlog` を指定して使用する方法については、「[SQL を使用した DB ログのアクセスのための log\$1fdw 拡張機能の使用](CHAP_PostgreSQL.Extensions.log_fdw.md)」を参照してください。

このパラメータに `csvlog` を指定する場合、`stderr` ファイル と `csvlog` ファイルの両方が生成されることに注意してください。ログのストレージと回転率に影響する `rds.log_retention_period` とその他の設定を考慮し、ログによって消費されるストレージに注意してください。`stderr` と `csvlog` を使用すると、ログで消費されるストレージが 2 倍以上になります。

`log_destination` に `csvlog` を追加して、`stderr` だけに戻す場合は、パラメータをリセットする必要があります。そのためには、Amazon RDS コンソールを開いて、インスタンスのカスタム DB パラメータグループを開きます。`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` – アプリケーション名 