hello foo bar Saba note | PostgreSQLでクエリログを出す

PostgreSQLでクエリログを出す

2019.11.18 (月)

version11の場合です。postgresql.confの修正だけでオーケー。
/var/lib/pgsql/11/data/postgresql.confを修正します。

#log_statement = 'none'            # none, ddl, mod, all
↓
log_statement = 'all'         # none, ddl, mod, all

logの下のログファイルにクエリが出力される。11以前のデフォルトの設定はlog_directory = 'pg_log'になっているっぽい。11だとlog_directory = 'log'になってますね。
たぶん再起動しないとダメっぽい。

# systemctl restart postgresql-11.service

以下の場所に曜日付きのフォーマットで出力されます。(なんで曜日なんだろ。。)

/var/lib/pgsql/11/data/log/postgresql-Fri.log

クエリログのフォーマット

postgresql.confの以下の箇所を修正します。フォーマットは一般的な日付フォーマットをそのまま適用できるようです。 postgresql-Fri.logというようなログをpostgresql-20191118.logのように西暦年月日にします。

log_filename = 'postgresql-%a.log'      # log file name pattern,
↓
log_filename = 'postgresql-%Y%m%d.log'      # log file name pattern,

曜日フォーマットの場合、一週間で自動的に上書きされる仕組みになっているのですが、この日付フォーマットにするとログがずっと溜まりっぱなしになるので別途ローテートの仕組みを作ったほうがいいです。たぶん容量がものすごい量になるのでご注意ください。