PostgreSQL > ログの設定

更新日 2014-05-06
広告
postgresql (バージョン9.1) のログの設定方法を紹介します。 ログの設定は、設定ファイル (例えば /etc/postgresql/9.1/main/postgresql.conf) で行います。
logging_collector = on
logging_collector を on に設定すれば、 /var/lib/postgresql/9.1/main/pg_log 以下にログファイルが作成されます(環境によっては、ログファイルの作成場所は異なる場合があります)。例えば、以下のようなログがファイルに出力されます。
2014-03-02 17:03:04 JST LOG:  database system is ready to accept connections
2014-03-02 17:03:04 JST LOG:  autovacuum launcher started
2014-03-02 17:03:05 JST LOG:  incomplete startup packet
ログのタイムスタンプをミリ秒まで出力したければ、以下の設定します。
log_line_prefix = '%m '
これで、以下のようになります。
2014-03-02 17:10:08.597 JST LOG:  database system is ready to accept connections
2014-03-02 17:10:08.598 JST LOG:  autovacuum launcher started
2014-03-02 17:10:08.892 JST LOG:  incomplete startup packet

他にも %u (ユーザ名) や %d (データベース名) 、%p (プロセスID) を出力できます。

詳細なログを出力したければ、以下の設定を行います。

log_checkpoints = on
log_connections = on
log_statement = 'all'

log_checkpoints を on にすると、チェックポイント処理のログが出力されます。

log_connections を on にすると、コネクション接続のログが出力されます。

log_statement を on にすると、SQLクエリが出力されます。

2014-03-02 17:25:59.100 JST LOG:  database system is ready to accept connections
2014-03-02 17:25:59.101 JST LOG:  autovacuum launcher started
2014-03-02 17:25:59.428 JST LOG:  connection received: host=[local]
2014-03-02 17:25:59.939 JST LOG:  connection authorized: user=postgres database=postgres
2014-03-02 17:25:59.946 JST LOG:  statement: SELECT d.datname as "Name",
               pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
               pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
               d.datcollate as "Collate",
               d.datctype as "Ctype",
               pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
        FROM pg_catalog.pg_database d
        ORDER BY 1;
こんな感じになります。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system