« SHA1の値を取得する | メイン | 成長するファイルを読み込み続ける »

カテゴリー:メンテナンス 

実行されたSQLを自動的にログへ記録する (PostgreSQL)

このエントリーを含むはてなブックマーク  livedoorクリップ  実行されたSQLを自動的にログへ記録する (PostgreSQL)をdel.icio.usに追加  実行されたSQLを自動的にログへ記録する (PostgreSQL)をYahoo!ブックマークに追加  実行されたSQLを自動的にログへ記録する (PostgreSQL)をニフティクリップに追加

データベースへ投げられたSQLを実行される度に記録したいが、どうすれば良いだろう?
PostgreSQLでは設定ファイル「postgresql.conf」内にある「log_statement」の設定を変更すれば良い。

PostgreSQLでは8.0からログの記録に関する機能が強化されている。log_statementの部分に、none, mod, ddl, allのいずれかの値を記録すれば良い。

log_statement = 'mod'   # none, mod, ddl, all

変更後はpostgresを再起動すること。それぞれの値の意味は次のようになる。
  • none
     記録しない。デフォルトは通常これ。
  • ddl
     CREATE、ALTER、DROPなどのデータ定義文
  • mod
     "ddl"+INSERT、UPDATE、DELETE、TRUNCATE、COPY FROMなど、データに変更を加えるもの
  • all
     すべてのSQLを記録
なお、SQL文そのものに文法エラーなどがあり実行されなかった場合はデフォルトでは記録されない。つまり"all"であったとしても、データベースへ投げられた全てのSQLが記録されるわけではないのだ。
 ※記録したい場合は「log_min_error_statement」の値を変更する。


○参考ページ
17.7. エラー報告とログ取得
http://www.postgresql.jp/document/pg820doc/html/runtime-config-logging.html





トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/624






クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.