Die Einstellung "log_min_duration_statement" wird ignoriert


15

Ich laufe Postgresql 9.1auf Ubuntu. Genaue Postgresql-Version ist, 9.1+129ubuntu1wie mein Paketmanager zeigt.

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

Ich möchte Abfragen mit langer Ausführungszeit protokollieren. Also habe ich folgende Parameter in der /etc/postgresql/9.1/main/postgresql.confDatei eingestellt

log_min_duration_statement = 10000
log_statement = 'mod'

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

Aber wenn ich reloaddie Postgres-Konfiguration, beginnt Postgresql, jede Abfrage, die log_statementWert passt, zu protokollieren . Das habe ich natürlich auf 100 Sekunden eingestellt

log_min_duration_statement = 100000

Aber Postgresql protokolliert weiterhin jede Abfrage, die zum log_statementWert passt , unabhängig vom log_min_duration_statementWert.

Das Einstellen log_statementvon noneschien die Protokollierung anzuhalten.

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


Die Sache ist, dass Sie die Vereinigung der beiden Mengen, nicht den Schnittpunkt davon protokollieren. Mir ist nicht bewusst, ob es so gemacht werden kann, wie Sie es möchten.
Dezso

Soll ich also deaktivieren (auskommentieren), log_statementdamit log_min_duration_statementes funktioniert?
FallenAngel

Wenn Sie einfach alle mit langer Laufzeit- Anweisungen protokollieren wollen (sei es ein SELECT, UPDATEoder einige DDL), dann ja.
Dezso

Antworten:


21

Du warst nah. Deine 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. Möglicherweise wurde die Protokollierung gestoppt, da 10 Sekunden einen hohen Schwellenwert darstellen. Ich benutze normalerweise 2 Sekunden, aber YMMV.

Diese verwandte Antwort auf SO hat mehr:
log_min_duration_statement funktioniert nicht


3
Lassen Sie mich hinzufügen, dass die Standardeinstellung für log_statementist none, also nicht festlegen oder festlegen, um noneden gleichen Effekt zu haben.
Dezso
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.