Ich laufe Postgresql 9.1
auf Ubuntu. Genaue Postgresql-Version ist, 9.1+129ubuntu1
wie 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.conf
Datei eingestellt
log_min_duration_statement = 10000
log_statement = 'mod'
Daher protokolliert Postgresql Abfragen, die länger als 10 Sekunden dauern.
Aber wenn ich reload
die Postgres-Konfiguration, beginnt Postgresql, jede Abfrage, die log_statement
Wert 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_statement
Wert passt , unabhängig vom log_min_duration_statement
Wert.
Das Einstellen log_statement
von none
schien die Protokollierung anzuhalten.
Gibt es etwas, das ich an der Konfiguration verpasst habe?
quelle
log_statement
damitlog_min_duration_statement
es funktioniert?SELECT
,UPDATE
oder einige DDL), dann ja.Antworten:
Du warst nah. Deine letzte Idee ist eigentlich der richtige Weg:
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
quelle
log_statement
istnone
, also nicht festlegen oder festlegen, umnone
den gleichen Effekt zu haben.