僕のテストサーバーでのPostgresqlバージョンは7.4.12です。
1)postgresql.confの設定(ソースからインストールした場合は/usr/local/pgsql/data下にあります)
syslog = 2 # range 0-2; 0=stdout; 1=both; 2=syslogを追加。(クエリ実行に100ミリ秒以上かかったクエリをsyslogへ出力。facilityはlocal0に設定)
log_min_duration_statement = 100 # milliseconds
syslog_facility = 'LOCAL0' # この設定はなくてもOK?
2)/etc/syslog.confの設定
local0.* /var/log/postgresを追加。(facility0を/var/log/postgresへログ出力)
*.info;mail.none;authpriv.none;cron.none /var/log/messagesをコメントアウトして
*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messagesを追加。(これがないと/var/log/messagesと/var/log/postgresの両方にログが出てしまう)
3)postgresqlとsyslogを再起動
# /sbin/service postgres reload以上で、実行に時間のかかるクエリのログが取得できます。
# /sbin/service syslog restart
他にもpostgresql.confでいろいろ設定できるようなので、試してみる価値ありそうです。
これ試してみて、サーバーが重くなったら即時に設定を元に戻してpostgresqlとsyslogを再起動してください。
以上。・゚・(ノε`)・゚・。