web-dev-qa-db-ja.com

log_min_duration_statement設定は無視されます

UbuntuでPostgresql 9.1を実行しています。私のパッケージマネージャーが示すように、正確なPostgresqlバージョンは9.1+129ubuntu1です。

アクティブに使用されている2つのデータベースがあり、それらはリモートサーバーから使用されます。

実行時間が長いクエリをログに記録したい。だから私は/etc/postgresql/9.1/main/postgresql.confファイルに次のパラメータを設定しました

log_min_duration_statement = 10000
log_statement = 'mod'

そのため、Postgresqlは10秒以上かかるクエリをログに記録します。

しかし、postgres構成をreloadすると、Postgresqlはlog_statement値に適合するすべてのクエリのログを記録し始めます。念のため、期間を100秒に設定したこと

log_min_duration_statement = 100000

ただし、Postgresqlは、log_statement値に関係なく、log_min_duration_statement値に適合するすべてのクエリをログに記録し続けます。

log_statementnoneに設定すると、ロギングが停止したようです。

構成について見逃したことはありますか?

15
FallenAngel

あなたは近くにいた。あなたの最後のアイデアは実際に行く方法です:

log_statement = none
log_min_duration_statement = 10000

その後、クエリ文字列自体を含め、10秒より長く実行されているステートメントを除いて、ステートメントはログに記録されません。 10秒が高いしきい値であるため、ロギングが停止したように見えた可能性があります。普段は2秒使っていますが、YMMV。

SOに関するこの関連回答には、さらに多くの情報があります。
log_min_duration_statementを機能させることができません

21