【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’」の設定はデータベースの利用状況によっては大量のログが出力され、ディスクの容量を圧迫することになります。


以上となります。

ここまでお読みいただきありがとうございました。

PostgreSQL

Posted by だゆう