it-swarm.com.de

Die Einstellung log_min_duration_statement wird ignoriert

Ich verwende Postgresql 9.1 Unter Ubuntu. Die genaue Postgresql-Version ist 9.1+129ubuntu1, Wie mein Paketmanager zeigt.

Ich habe 2 Datenbanken, die aktiv verwendet werden und von einem Remote-Server verwendet werden.

Ich möchte Abfragen protokollieren, die eine lange Ausführungszeit haben. Also habe ich folgende Parameter in der Datei /etc/postgresql/9.1/main/postgresql.conf Eingestellt

log_min_duration_statement = 10000
log_statement = 'mod'

daher protokolliert Postgresql Abfragen, die länger als 10 Sekunden dauern.

Aber wenn ich die Postgres-Konfiguration reload, beginnt Postgresql, jede Abfrage zu protokollieren, die dem Wert log_statement Passt. Dass ich die Dauer auf 100 Sekunden eingestellt habe, um sicherzugehen

log_min_duration_statement = 100000

Postgresql protokolliert jedoch weiterhin jede Abfrage, die dem Wert log_statement Entspricht, unabhängig vom Wert log_min_duration_statement.

Das Setzen von log_statement Auf none schien die Protokollierung zu stoppen.

Gibt es etwas, das ich an der Konfiguration verpasst habe?

15
FallenAngel

Du warst nah. Ihre letzte Idee ist eigentlich der richtige Weg:

log_statement = none
log_min_duration_statement = 10000

Dann wird keine Anweisung protokolliert, außer denjenigen, die länger als 10 Sekunden ausgeführt werden - einschließlich der Abfragezeichenfolge selbst. Die Protokollierung scheint gestoppt zu sein, da 10 Sekunden ein hoher Schwellenwert sind. Ich benutze normalerweise 2 Sekunden, aber YMMV.

Diese verwandte Antwort auf SO hat mehr:
log_min_duration_statement kann nicht zum Laufen gebracht werden

21