エラーになったSQLをログに記録する log_min_error_statement

CentOS 5.x postgresql-server-8.1

SQL文の実行エラーになるとメッセージがログに記録され、どの辺りに問題があるかも知らされるが、SQL文の全体はわからない。

2015-07-05 09:00:11 JST ERROR:  syntax error at or near "VALUES" at character 1

/var/lib/pgsql/data/postgresql.conf に log_min_error_statement の設定が
あり、コメントになっている。
デフォルト値は panic。

#log_min_error_statement = panic        # Values in order of increasing severity:
                                        #   debug5
                                        #   debug4
                                        #   debug3
                                        #   debug2
                                        #   debug1
                                        #   info
                                        #   notice
                                        #   warning
                                        #   error
                                        #   panic(off)

error に変更する。

log_min_error_statement = error

設定反映

# service postgresql reload

エラーメッセージに続けてSQL文も記録されるようになった。

2015-07-05 09:10:11 JST ERROR:  syntax error at or near "VALUES" at character 1
2015-07-05 09:10:11 JST STATEMENT:  VALUES ('sequential','Sequential scans'), ('index','Index scans')


log_min_error_statement のデフォルト値は 8.1 ではpanicだが、8.2 からはerrorになっているようだ。

https://www.postgresql.jp/document/8.1/html/runtime-config-logging.html

log_min_error_statement(string)
エラー条件の原因となったSQL文をサーバログに記録するかを制御します。設定したレベル以上のエラーを発生させた全てのSQL文がログに記録されます。デフォルトは PANICです(実質、通常の使用ではこのオプションは無効になっています)。有効な値は、DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、FATAL、PANICです。例えば、これをERRORに設定すると、エラー、致命的なエラー、またはパニックを引き起こした全てのSQL文がログに記録されます。このオプションを有効にすると、サーバログに書き出されたエラー発生元を追跡することが容易になります。スーパーユーザのみがこのオプションを変更することができます。


https://www.postgresql.jp/document/8.2/html/runtime-config-logging.html

log_min_error_statement(string)
エラー条件の原因となったSQL文をサーバログに記録するかを制御します。 設定したレベル以上のメッセージについては現在のSQL文がログに記録されます。 有効な値は、DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、FATAL、PANICです。 デフォルトはERRORです。 エラー、致命的エラー、パニックを引き起こした文がログに記録されることを意味します。 失敗した文の記録を実質的に無効にするには、このパラメータをPANICに設定してください。 スーパーユーザのみがこのオプションを変更することができます。