PostgreSQLのログ設定

提供: Astarisk Works Wiki

このページではPostgreSQL独自のログファイルにログを出力する設定を説明します。

目次

ログの出力先を変更するための設定

syslogを使う方法

  1. postgresql.confの設定
    実行時パラメータlog_destinationの値をsyslogに変更します(ver8.0以降のみ)
    実行時パラメータsyslog_facilityの値をLOCAL1に変更します。
  2. /etc/syslog.confの設定
    • LOCAL1のログファイル名を指定する
    LOCAL1.* /var/log/pgsql/postgres.log
  3. 設定後はsyslogd、PostgreSQLを再起動するなどして設定を有効にする

syslogを使わない方法

ver.8.0以上で使える方法です。 ログローテーションも可能で、syslog経由で出力する必要がないならこちらの方がお手軽かと思います。 設定対象はpostgresql.confです。

  1. log_truncate_on_rotation='stderr'と設定する
  2. redirect_stderr = on と設定する
  3. log_directoryにログを出力するディレクトリを指定する
    • デフォルトではベースディレクトリにサブディレクトリpg_logを作り、そこに出力するよう設定されている
  4. log_filenameに出力するログファイルのファイル名形式を設定する
    • デフォルトではpostgresql-%Y-%m-%d_%H%M%S.logとなっている
  5. log_truncate_on_rotation = on と設定する
    • offのままだとログファイルが重複したとき追記となる。
    • 例えばlog_truncate_on_rotation = onにしてlog_filename = 'postgresql-%d.log'とすると毎日切り替わる1ヶ月で1周するローテーションになります。
  6. log_rotation_age(単位分)とlog_rotation_size(単位KB)を必要に応じて設定する。
    • log_rotation_age:これで設定した時間を経過するとファイルを切り替える
    • log_rotation_size:これで設定したファイルサイズを超えるとファイルを切り替える
    • 両方設定するとどちらかを満たした時点でファイルが切り替わる
    • どちらも0(ゼロ)を設定すると無効となる
  7. PostgreSQLを再起動するなりして設定を有効にする

ログの出力内容の設定

ログ出力に影響する実行時パラメータを紹介します。

実行時パラメータ説明
log_connectionsonに設定すると接続元のクライアントのIPアドレス、ポートがログに出力される
log_durationonに設定するとSQLの実行時間がログに出力される
log_statement SQL文をログに出力するかどうかを設定します。下の値はver8.0以上のものです。それ以前はon/offのみです。
none
SQL文を出力しない
ddl
DDL文(CREATE、ALTER、DROPなど)を出力する
mod
すべてのDBを変更するSQLを出力する
all
全てのSQL
個人用ツール