【PostgreSQL】実行されたSQLをログで確認する方法
PostgreSQLで実行されたSQLをログ出力する手順を書いていきます。
ここで紹介しているのは「システム共通でログ出力する方法」と「データベース指定でログ出力する方法」の2通りです。
実行されたSQLをログで確認する方法
今回使用した環境
インターネット接続可能のオンラインの環境
64 ビット オペレーティング システム
Windows 10 22H2
PostgreSQL 14.4
システム共通で設定
こちらはPostgreSQL全体での実行されたSQLをログ出力する設定です。
1.「postgresql.conf」を見つけ、メモ帳で開きます。
筆者の環境では「C:\Program Files\PostgreSQL\14\data」フォルダの配下にありました。
2.「postgresql.conf」を以下のように編集します。
変更前:#log_statement = 'none’
変更後:log_statement = 'all’
3.サービス「postgresql-x64-14 – PostgreSQL Server 14」を再起動します。
※インストール環境によってサービス名は変わってくると思います。
システム共通での設定変更は以上となります。
データベース指定で設定
こちらはデータベースを指定しての実行されたSQLをログ出力する設定です。データベースが複数あり、特定のデータベースのみログ出力して調査したい場合、こちらのほうが良いでしょう。
ここでは「sampledb」というデータベースに対してログ出力の設定変更をしてみます。
1.psqlにて以下のコマンドを実行します。
alter database sampledb set log_statement = 'all’;
2.以下のselect文で設定変更されたかどうか確認します。
select * from pg_db_role_setting;
「{log_statement=all}」のレコードが表示されれば、設定変更できています。
3.サービス「postgresql-x64-14 – PostgreSQL Server 14」を再起動します。
※サービスの再起動はシステム共通で設定する時と同じです。
データベース指定での設定変更は以上となります。
補足 設定を元に戻す方法
1.psqlにて以下のコマンドを実行します。
alter database sampledb reset log_statement;
2.元に戻ったかどうか確認します。
さきほど表示されていた「{log_statement=all}」のレコードがなくなっていることが確認できました。
3.サービス「postgresql-x64-14 – PostgreSQL Server 14」を再起動します。
※サービスの再起動はシステム共通で設定する時と同じです。
動作確認
ログファイルを開いて確認します。
筆者の環境では「C:\Program Files\PostgreSQL\14\data\log」フォルダの配下にありました。
ログファイルを開くと実際に実行されたSQLが確認できました。
注意
「log_statement = 'all’」の設定はデータベースの利用状況によっては大量のログが出力され、ディスクの容量を圧迫することになります。
以上となります。
ここまでお読みいただきありがとうございました。