PostgreSQLのログ設定
提供: Astarisk Works Wiki
このページではPostgreSQL独自のログファイルにログを出力する設定を説明します。
目次 |
ログの出力先を変更するための設定
syslogを使う方法
- postgresql.confの設定
- 実行時パラメータlog_destinationの値をsyslogに変更します(ver8.0以降のみ)
- 実行時パラメータsyslog_facilityの値をLOCAL1に変更します。
- /etc/syslog.confの設定
- LOCAL1のログファイル名を指定する
- LOCAL1.* /var/log/pgsql/postgres.log
- 設定後はsyslogd、PostgreSQLを再起動するなどして設定を有効にする
syslogを使わない方法
ver.8.0以上で使える方法です。 ログローテーションも可能で、syslog経由で出力する必要がないならこちらの方がお手軽かと思います。 設定対象はpostgresql.confです。
- log_truncate_on_rotation='stderr'と設定する
- redirect_stderr = on と設定する
- log_directoryにログを出力するディレクトリを指定する
- デフォルトではベースディレクトリにサブディレクトリpg_logを作り、そこに出力するよう設定されている
- log_filenameに出力するログファイルのファイル名形式を設定する
- デフォルトではpostgresql-%Y-%m-%d_%H%M%S.logとなっている
- log_truncate_on_rotation = on と設定する
- offのままだとログファイルが重複したとき追記となる。
- 例えばlog_truncate_on_rotation = onにしてlog_filename = 'postgresql-%d.log'とすると毎日切り替わる1ヶ月で1周するローテーションになります。
- log_rotation_age(単位分)とlog_rotation_size(単位KB)を必要に応じて設定する。
- log_rotation_age:これで設定した時間を経過するとファイルを切り替える
- log_rotation_size:これで設定したファイルサイズを超えるとファイルを切り替える
- 両方設定するとどちらかを満たした時点でファイルが切り替わる
- どちらも0(ゼロ)を設定すると無効となる
- PostgreSQLを再起動するなりして設定を有効にする
ログの出力内容の設定
ログ出力に影響する実行時パラメータを紹介します。
| 実行時パラメータ | 説明 |
|---|---|
| log_connections | onに設定すると接続元のクライアントのIPアドレス、ポートがログに出力される |
| log_duration | onに設定するとSQLの実行時間がログに出力される |
| log_statement | SQL文をログに出力するかどうかを設定します。下の値はver8.0以上のものです。それ以前はon/offのみです。
|