PostgreSQL

PostgreSQL で SQL 実行履歴を確認する

システム全体で全ての SQL 実行履歴をログに出力する方法

postgresql.conf に log_statement = 'all'; を追記し、サービスを再起動する。

設定の確認方法は以下。

postgres=# show log_statement;
 log_statement
---------------
 all
(1 行)

この方法は conf ファイルの編集、サービス再起動が発生するのが難点。

DB 単位で SQL 実行履歴をログに出力する方法

この方法はコマンドだけで即時反映できるので、お奨め。ただし、サービス再起動しても設定は残り続けるので、元に戻す必要があるなら忘れないようにする。

postgres=# ALTER DATABASE mydatabase SET log_statement = 'all';
ALTER DATABASE

設定の確認方法は以下。

postgres=# select * from pg_db_role_setting;
 setdatabase | setrole |      setconfig
-------------+---------+---------------------
       16391 |       0 | {log_statement=all}
(1 行)

元に戻す方法は以下。こちらも即時反映。

postgres=# ALTER DATABASE mydatabase RESET log_statement;

ログの出力先

以下コマンド

postgres=# show log_directory;

や、postgresql.conf の log_directory の設定で確認できる。

例えば RHEL 版や PGDG 版を Linux にインストールしている場合は、/var/lib/pgsql/data/log もしくは /var/lib/pgsql/15/data/log 等がデフォルト。

tail -f /var/lib/pgsql/data/log/postgresql-Fri.log

などで眺めるがよろし。

コメント

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