PostgreSQLデータベースで実行されたSQLクエリのログを出力させる方法を解説します。
設定ファイルの格納先
PostgreSQLデータベースから出力されるログを制御するには、設定ファイル「postgresql.conf」を修正する必要があります。
基本的には、下記のようなPostgreSQLデータベースをインストールしたディレクトリに格納されています。
- /usr/local/pgsql/data/
- /var/lib/pgsql/9.4/data/
格納先が分からない場合は、findコマンドを使用して、設定ファイルを探してみて下さい。
[root@localhost ~]# find / -name "postgresql.conf" -type f /var/lib/pgsql/10/data/postgresql.conf
リンク
ログの出力設定
設定ファイルを修正し、ログが出力されるようにします。
下記のように、viコマンドなどで設定ファイルを修正します。
修正の反映には、データベースの再起動が必要となる場合があります。
[root@localhost ~]# vi /var/lib/pgsql/10/data/postgresql.conf
主に使用する設定パラメータをまとめてみました。
パラメータ | 設定例 | 説明 |
---|---|---|
logging_collector | on off | on:ログを出力する off:ログを出力しない |
log_directory | pg_log | ログの出力ディレクトリ PostgreSQLのインストールディレクトリ配下に設定したディレクトリが作成され、その配下にログが出力される。 |
log_filename | postgresql-%Y-%m-%d_%H%M%S.log | 出力ログのファイル名 設定例の場合、「postgresql-2022-07-10_101239.log」ようなファイル名となる |
log_statement | all | 出力するログの内容 none, ddl, mod, allなどが設定可能。 all:全てのログ(システムによっては大量のログが出力されます) ddl:CREATE、ALTER、DROPなどの実行クエリ |
log_truncate_on_rotation | on off | on:ログローテーションする off:ログローテーションしない |
log_rotation_size | 10MB | ログローテーションするファイルサイズ |
リンク
出力例
設定例になります。下記以外はデフォルトのままです。
log_destination = 'stderr' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_statement = 'all'
上記設定の場合の出力例です。
ログの出力先は「/var/lib/pgsql/10/data/pg_log」です。
出力されるログのファイル名は「postgresql-2022-07-21_163438.log」です。
出力されるログの内容としては、システムで実行されたSELECT文やUPDATE文、トランザクション情報などになります。
コメント