【PostgreSQL】実行ログを取得する


この記事はプロモーションを含みます。

PostgreSQL

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_collectoron
off
on:ログを出力する
off:ログを出力しない
log_directorypg_logログの出力ディレクトリ
PostgreSQLのインストールディレクトリ配下に設定したディレクトリが作成され、その配下にログが出力される。
log_filenamepostgresql-%Y-%m-%d_%H%M%S.log出力ログのファイル名
設定例の場合、「postgresql-2022-07-10_101239.log」ようなファイル名となる
log_statementall出力するログの内容
none, ddl, mod, allなどが設定可能。
all:全てのログ(システムによっては大量のログが出力されます)
ddl:CREATE、ALTER、DROPなどの実行クエリ
log_truncate_on_rotationon
off
on:ログローテーションする
off:ログローテーションしない
log_rotation_size10MBログローテーションするファイルサイズ

出力例

設定例になります。下記以外はデフォルトのままです。

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文、トランザクション情報などになります。

コメント

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