PostgreSQLのクエリ(SQL)のログを確認する方法

一般IT

PostgreSQLのクエリ(SQL)のログを確認する

PostgreSQLを運用していると、「どんなクエリが実行されているのか確認したい」と思う場面は多くあります。性能チューニングやエラー調査の際にログを残しておくと非常に役立ちます。ここでは、PostgreSQLでクエリログを出力する手順を解説します。

インストールフォルダ内のpostgresql.confを確認する

まずはPostgreSQLの設定ファイル postgresql.conf を探します。
通常は以下の場所に格納されています。

Linux: /var/lib/pgsql/<バージョン>/data/postgresql.conf

Windows: C:\Program Files\PostgreSQL\<バージョン>\data\postgresql.conf

環境によって異なる場合があります。

postgresql.conf内のlog_statementの引数を変更する

次に、設定ファイルをエディタで開き、log_statement の値を変更します。

デフォルト ⇒ #log_statement = ‘none’
変更後 ⇒ log_statement = ‘all’

設定できる値は以下の通りです。

none : ログを出力しない(デフォルト)

ddl : CREATE / ALTER / DROP などDDLのみログに出力

mod : DDLに加えて、INSERT / UPDATE / DELETE も出力

all : 全てのSQLを出力

今回は all を指定しますが、本番環境ではログ肥大化に注意してください。

サービスを再起動する

設定を変更したら、PostgreSQLのサービスを再起動する必要があります。

Linuxの場合:
sudo systemctl restart postgresql

Windowsの場合:
サービス一覧を開く
PostgreSQL を選択して「再起動」をクリック
再起動後、新しい設定が反映されます。

ログを確認する

デフォルト設定の場合、dataディレクトリ直下の log フォルダにログが保存されます。

ログの保存場所は postgresql.conf の以下のパラメータで決まります。
log_directory = ‘pg_log’ # デフォルトではデータディレクトリ配下
log_filename = ‘postgresql-%Y-%m-%d.log’


Linux環境なら例えば:
tail -f /var/lib/pgsql/<バージョン>/data/pg_log/postgresql-YYYY-MM-DD.log
でリアルタイムにクエリログを追うことができます。

まとめ

いかがでしたでしょうか?ログを確認できるようになれば幸いです。手順をまとめると以下となります。

1:postgresql.conf を探す

2:log_statement を ddl / mod / all に変更

3:サービスを再起動する

4:ログディレクトリで出力を確認する

これでPostgreSQLのクエリログを確認できるようになります。

コメント

タイトルとURLをコピーしました