[pgsql-jp: 31655] サマリー( Re: 実行ログが取得できない )

Ryuichiro Munechika ml @ niji-net.com
2003年 11月 28日 (金) 17:29:13 JST


 まいパパです
 こんにちは^^

  みなさんのおかげでPostgreSQLの実行ログを取得することに成功しました。

 ありがとうございます。

 経過についてサマリーの形でまとめさせていただきます。おかしな個所があれば
ご指摘ください。

========================================================================
[前提条件]

 PostgreSQLのログを取得するためには、PostgreSQLのコンパイル時
オプションで'--enable-syslog'が有効になっている必要があります。

 例) ./configure --enable-syslog ; make ; make install

(注意)
PostgreSQL-7.4では'--enable-syslog'がデフォルトになったようであり、オプション
を指定する必要がなくなりました。

[設定]

 1.PostgreSQLの設定ファイルpostgresql.conf(このファイルの存在場所
 は各自の環境に依存します)のsyslog行を有効にし、値を'2'に設定します。
  また、SQL実行の全てのログを取得するためには、log_statment行を有効に
 します。

 例) syslog = 2
      log_statment = true


  2./etc/syslog.confに以下の行を追加します。

 local0.*		/var/log/postgresql.log

  3.上記で指定したファイルをtouchコマンド等で作成し、パーミッションを
 変更します。

  例) touch /var/log/postgresql.log
      chmod 777 /var/log/postgresql.log

  4.syslogデーモンを再起動します

 例) /etc/rc.d/init.d/syslog restart

========================================================================

 以上の設定で、PostgreSQLのログを取得できることになります。

 あと、今回の調査でわかった件ですが

 1.ログ取得についてはデフォルトでは「取得しない」状態になっているので
 上記の設定が必要。

 2.実テーブルだけでなく、一時テーブルで発生したトランザクション(insert/update)
  についても全てログに記録される。

[ログ出力例]
[munetika @ ns log]$ tail postgresql.log
Nov 28 07:40:45 ns postgres[19495]: [6] LOG:  query: insert into aaa values('aaa','bbb');
Nov 28 07:40:48 ns postgres[19495]: [7] LOG:  query: commit;
Nov 28 07:41:21 ns postgres[19495]: [8] LOG:  query: create temp table tmp (aaa text,bbb text);
Nov 28 07:41:31 ns postgres[19495]: [9] LOG:  query: begin;
Nov 28 07:41:37 ns postgres[19495]: [10] LOG:  query: insert into tmp values('aaa','bbb');
Nov 28 07:41:38 ns postgres[19495]: [11] LOG:  query: insert into tmp values('aaa','bbb');
Nov 28 07:41:38 ns postgres[19495]: [12] LOG:  query: insert into tmp values('aaa','bbb');
Nov 28 07:41:39 ns postgres[19495]: [13] LOG:  query: insert into tmp values('aaa','bbb');
Nov 28 07:41:41 ns postgres[19495]: [14] LOG:  query: insert into tmp values('aaa','bbb');
Nov 28 07:41:44 ns postgres[19495]: [15] LOG:  query: commit;

 したがって、Tietew様よりご指摘のあったPostgreSQLでのログ取得の注意点ですが、

 1.本格運用時にログ取得すると膨大な量のログが発生することになるので、一定期間ログを
 保存した後廃棄するような運用が必要。

 あと、

 2.ログ出力のオーバーヘッドが発生するので、パフォーマンスに影響が出る。

ことも注意点だと思われます。

-- 
宗近龍一郎    大阪府寝屋川市
munetika @ niji-net.com



pgsql-jp メーリングリストの案内